cari
Rumahpembangunan bahagian belakangTutorial PythonSelesai ✅ : Panduan langkah demi langkah dalam membina Senarai Tugasan Django

Get Done ✅ : A step-by-step guide in building a Django To Do List

pengenalan

Mengurus tugas dengan berkesan adalah penting dalam kehidupan sibuk kita, dan aplikasi senarai tugasan boleh menjadi alat yang sangat baik untuk kekal teratur. Catatan blog ini membimbing anda melalui pembangunan aplikasi senarai tugasan menggunakan Django, rangka kerja web yang berkuasa dan serba boleh dalam Python. Projek itu, bertajuk django-todoList, direka untuk membantu pengguna mencipta, mengurus dan menjejaki tugas harian mereka dengan lancar.

Prasyarat

Sebelum kita mula, pastikan anda mempunyai perkara berikut:

  • Python dipasang (sebaik-baiknya versi 3.8 ke atas).

  • Django dipasang. Jika tidak, anda boleh memasangnya menggunakan arahan berikut.

pip install django
  • Pemahaman asas tentang cara Django berfungsi dan kebiasaan dengan Python dan HTML.

Langkah 1: Menyediakan Projek

1.1 Cipta Projek Django

Pertama, buat projek Django baharu menggunakan arahan:

django-admin startproject mysite

Navigasi ke dalam folder projek anda:

cd mysite

1.2 Cipta Apl Django

Seterusnya, buat apl dalam projek. Kami akan memanggilnya todoList:

python manage.py startapp todoList

Langkah 2: Tentukan Model

Dalam Django, model digunakan untuk menentukan struktur data anda. Untuk apl Tugasan GetDone, kami memerlukan model untuk mewakili Tugasan.

Navigasi ke todoList/models.py dan tentukan model Tugas:

from django.db import models
from django.contrib.auth.models import User

class Task(models.Model):
    title = models.CharField(max_length=200)
    description = models.TextField()
    complete = models.BooleanField(default=False)
    created = models.DateTimeField(auto_now_add=True)
    deadline = models.DateTimeField(null=True, blank=True)
    user = models.ForeignKey(User, on_delete=models.CASCADE)

    def __str__(self):
        return self.title

Model ini termasuk medan seperti tajuk, penerangan, tarikh akhir dan lengkap untuk menyimpan butiran setiap tugas. Kami juga mengaitkan setiap tugas dengan pengguna melalui kunci asing pengguna.

2.1 Pindahkan Pangkalan Data

Setelah model sedia, jalankan migrasi untuk mencipta jadual untuk model ini dalam pangkalan data:

python manage.py makemigrations
python manage.py migrate

Langkah 3: Cipta Borang

Kami memerlukan borang untuk mengendalikan input pengguna untuk membuat dan mengemas kini tugas. Dalam todoList/forms.py, cipta Borang Tugas:

from django import forms
from .models import Task

class TaskForm(forms.ModelForm):
    class Meta:
        model = Task
        fields = ['title', 'description', 'deadline', 'complete']
        widgets = {
            'title': forms.TextInput(attrs={'placeholder': 'Enter task title'}),
            'description': forms.Textarea(attrs={'placeholder': 'Enter task description', 'rows': 4}),
            'deadline': forms.DateTimeInput(attrs={'type': 'datetime-local'}),
            'complete': forms.CheckboxInput(),
        }

    def clean_title(self):
        title = self.cleaned_data.get('title')
        if not title:
            raise forms.ValidationError('Title is required')
        return title

    def clean_description(self):
        description = self.cleaned_data.get('description')
        if not description:
            raise forms.ValidationError('Description is required')
        return description

    def clean_deadline(self):
        deadline = self.cleaned_data.get('deadline')
        if not deadline:
            raise forms.ValidationError('Deadline is required')
        return deadline

Borang Tugas menggunakan Borang Model Django untuk mencipta medan borang secara automatik untuk model Tugas.

Langkah 4: Tentukan Pandangan

Seterusnya, kita perlu membuat paparan untuk mengendalikan permintaan pengguna, seperti membuat tugasan, mengemas kininya dan menyenaraikannya.

Dalam todoList/views.py, tentukan pandangan:

from django.shortcuts import render, redirect
from django.views.generic import ListView, CreateView, UpdateView, DeleteView
from django.contrib.auth.views import LoginView
from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib.auth.forms import UserCreationForm
from django.urls import reverse_lazy
from .models import Task
from .forms import TaskForm
from django.contrib import messages
from django.utils import timezone


# Task List View
class TodoListView(LoginRequiredMixin, ListView):
    model = Task
    context_object_name = 'tasks'
    template_name = 'task_list.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        user_tasks = Task.objects.filter(user=self.request.user)
        context['tasks'] = Task.objects.filter(user=self.request.user)
        context['incomplete_tasks_count'] = user_tasks.filter(complete=False).count()  # Count incomplete tasks
        context['now'] = timezone.now()
        return context

# Task Create View
class TaskCreate(LoginRequiredMixin, CreateView):
    model = Task
    form_class = TaskForm
    template_name = 'todoList/task_create.html'
    success_url = reverse_lazy('todoList')

    def form_valid(self, form):
        form.instance.user = self.request.user
        messages.success(self.request, 'Task created successfully!')
        return super(TaskCreate, self).form_valid(form)

# Task Update View
class TaskUpdate(LoginRequiredMixin, UpdateView):
    model = Task
    form_class = TaskForm
    template_name = 'todoList/task_update.html'
    success_url = reverse_lazy('todoList')
    def form_valid(self, form):
        messages.success(self.request, 'Task updated successfully!')
        return super(TaskUpdate, self).form_valid(form)

# Task Delete View
class TaskDelete(LoginRequiredMixin, DeleteView):
    model = Task
    context_object_name = 'task'
    template_name = 'todoList/task_delete.html'
    success_url = reverse_lazy('todoList')
    def dispatch(self, request, *args, **kwargs):
        response = super().dispatch(request, *args, **kwargs)
        if response.status_code == 302:
            messages.success(self.request, 'Task deleted successfully!')
        return response

# User Registration View
class RegisterView(CreateView):
    form_class = UserCreationForm
    template_name = 'todoList/register.html'
    success_url = reverse_lazy('todoList')

    def form_valid(self, form):
        response = super().form_valid(form)
        # Log the user in after successful registration
        from django.contrib.auth import login
        login(self.request, self.object)
        messages.success(self.request, 'Registration successful! Welcome!')
        return response


# Login View
class CustomLoginView(LoginView):
    template_name = 'todoList/login.html'
    fields = '__all__'
    redirect_authenticated_user = True

    def get_success_url(self):
        messages.success(self.request, 'You have logged in successfully!')
        return reverse_lazy('todoList')

-TodoListView: Menyenaraikan semua tugasan untuk pengguna log masuk.
-TaskCreate: Mengendalikan penciptaan tugas.
-TaskUpdate: Membenarkan pengguna mengemas kini tugasan.
-TaskDelete: Menyediakan halaman pengesahan untuk memadamkan tugas.
T-he LoginRequiredMixin memastikan bahawa hanya pengguna log masuk boleh mengakses paparan ini.

Langkah 5: Konfigurasikan URL

Dalam todoList/urls.py, petakan URL ke paparan masing-masing:

pip install django

Corak URL ini akan memetakan setiap paparan ke URL tertentu. Contohnya, senarai tugasan dipaparkan pada URL akar apl dan pengguna boleh membuat, mengedit atau memadamkan tugasan dengan melawati URL tertentu.

Langkah 6: Cipta Templat

Buat templat HTML berikut untuk memaparkan paparan:

6.1 asas.html

Templat asas menyediakan reka letak yang konsisten untuk semua halaman:

django-admin startproject mysite

Langkah 8: Tambah Pengesahan Pengguna

Dalam views.py, anda boleh menggunakan paparan pengesahan pengguna terbina dalam Django untuk mengendalikan pendaftaran dan log masuk pengguna. Sebagai contoh, anda boleh menggunakan UserCreationForm untuk membenarkan pengguna mendaftar:

cd mysite

Langkah 8: Jalankan Pelayan

Setelah semuanya disediakan, anda boleh menjalankan pelayan:

python manage.py startapp todoList

Lawati http://127.0.0.1:8000/todoList untuk melihat apl Senarai Tugasan anda sedang beraksi!

Memahami settings.py dan urls.py dalam Folder mysite

settings.py

Fail settings.py adalah bahagian penting dalam setiap projek Django. Ia mengandungi tetapan konfigurasi untuk projek anda, seperti tetapan pangkalan data, apl yang dipasang, perisian tengah, konfigurasi fail statik dan banyak lagi. Fail ini mengawal gelagat projek anda dan membenarkan Django menyambungkan titik antara pelbagai komponen.

Berikut ialah gambaran keseluruhan ringkas tentang tetapan utama dalam settings.py untuk apl Senarai Tugasan GetDone anda:

Bahagian Utama dalam settings.py:

Apl yang Dipasang: Dalam senarai INSTALLED_APPS, anda mendaftarkan semua apl yang digunakan dalam projek anda. Contohnya:

from django.db import models
from django.contrib.auth.models import User

class Task(models.Model):
    title = models.CharField(max_length=200)
    description = models.TextField()
    complete = models.BooleanField(default=False)
    created = models.DateTimeField(auto_now_add=True)
    deadline = models.DateTimeField(null=True, blank=True)
    user = models.ForeignKey(User, on_delete=models.CASCADE)

    def __str__(self):
        return self.title

Di sini, kami telah menambahkan todoList, iaitu apl yang mengurus tugasan, di samping apl lalai yang disediakan oleh Django untuk pengesahan pengguna, panel pentadbir dan fail statik.

urls.py

Dalam Django, fail urls.py mengendalikan penghalaan permintaan HTTP kepada paparan. Di sinilah anda memetakan corak URL (seperti /tasks/, /login/) kepada paparan sepadan yang akan mengendalikannya.

Dalam mysite/urls.py, anda biasanya memasukkan URL untuk keseluruhan projek dan memautkannya ke fail urls.py peringkat apl.

Berikut ialah rupa urls.py dalam apl GetDone anda:

Bahagian Utama dalam urls.py:

Urls.py Tahap Projek (tapak saya/urls.py): Fail urls.py dalam folder tapak saya ialah penghala utama untuk keseluruhan projek Django anda. Ia termasuk URL untuk panel pentadbir, pengesahan dan pautan ke URL khusus apl anda. Berikut ialah contoh:

pip install django

path('admin/', admin.site.urls): Baris ini termasuk panel pentadbir Django.
path('accounts/', include('django.contrib.auth.urls')): Ini termasuk URL pengesahan terbina dalam untuk log masuk, log keluar dan pengurusan kata laluan.
path('', include('todoList.urls')): Ini termasuk URL khusus apl (ditakrifkan dalam todoList/urls.py), jadi pengguna boleh menavigasi melalui tugas dan ciri lain.
App-Level urls.py (todoList/urls.py): Fail ini memetakan URL khusus untuk paparan dalam apl todoList. Ia mengandungi laluan untuk melihat tugasan, mencipta tugasan dan tindakan berkaitan tugas lain. Contohnya:

django-admin startproject mysite

TodoListView.as_view(): Paparan ini menyenaraikan semua tugasan untuk pengguna log masuk.
TaskCreate.as_view(): Pandangan ini mengendalikan borang penciptaan tugas.
TaskUpdate.as_view(): Paparan ini mengendalikan borang kemas kini tugas.
TaskDelete.as_view(): Paparan ini mengendalikan halaman pengesahan pemadaman tugas.

Komunikasi Antara Fail

Seni bina Django membolehkan komunikasi lancar antara fail dan komponen yang berbeza:

URL dan Paparan:

urls.py memetakan URL kepada paparan, seperti penciptaan tugas atau paparan senarai. Pandangan ditakrifkan dalam views.py.

Model dan Pandangan:

Paparan berinteraksi dengan model (ditakrifkan dalam models.py) untuk mendapatkan dan memanipulasi data (tugas). Contohnya, dalam TodoListView, paparan mengambil tugasan yang dikaitkan dengan pengguna log masuk menggunakan Task.objects.filter(user=self.request.user).

Borang dan Pandangan:

Borang (seperti TaskForm dalam forms.py) mengendalikan input pengguna dan berinteraksi dengan model untuk mengesahkan dan menyimpan data.

templat:

Templat memberikan output akhir dalam HTML, memaparkan data yang dihantar daripada paparan dan mengendalikan input pengguna melalui borang.

Kesimpulan

Dengan langkah ini, anda telah membina apl senarai Tugasan yang berfungsi sepenuhnya menggunakan Django. Anda telah melaksanakan pengesahan pengguna, pengurusan tugas (buat, edit, padam) dan mempelajari cara seni bina MVC (MTV) Django memudahkan komunikasi lancar antara model, paparan, templat dan URL. Panduan ini berfungsi sebagai asas yang kukuh untuk membina aplikasi Django yang lebih kompleks pada masa hadapan.

Kod penuh aplikasi tersedia untuk diklon di

cd mysite

Selamat pengekodan! ?

Atas ialah kandungan terperinci Selesai ✅ : Panduan langkah demi langkah dalam membina Senarai Tugasan Django. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Python vs C: Lengkung pembelajaran dan kemudahan penggunaanPython vs C: Lengkung pembelajaran dan kemudahan penggunaanApr 19, 2025 am 12:20 AM

Python lebih mudah dipelajari dan digunakan, manakala C lebih kuat tetapi kompleks. 1. Sintaks Python adalah ringkas dan sesuai untuk pemula. Penaipan dinamik dan pengurusan memori automatik menjadikannya mudah digunakan, tetapi boleh menyebabkan kesilapan runtime. 2.C menyediakan kawalan peringkat rendah dan ciri-ciri canggih, sesuai untuk aplikasi berprestasi tinggi, tetapi mempunyai ambang pembelajaran yang tinggi dan memerlukan memori manual dan pengurusan keselamatan jenis.

Python vs C: Pengurusan dan Kawalan MemoriPython vs C: Pengurusan dan Kawalan MemoriApr 19, 2025 am 12:17 AM

Python dan C mempunyai perbezaan yang signifikan dalam pengurusan dan kawalan memori. 1. Python menggunakan pengurusan memori automatik, berdasarkan pengiraan rujukan dan pengumpulan sampah, memudahkan kerja pengaturcara. 2.C memerlukan pengurusan memori manual, memberikan lebih banyak kawalan tetapi meningkatkan risiko kerumitan dan kesilapan. Bahasa mana yang harus dipilih harus berdasarkan keperluan projek dan timbunan teknologi pasukan.

Python untuk pengkomputeran saintifik: rupa terperinciPython untuk pengkomputeran saintifik: rupa terperinciApr 19, 2025 am 12:15 AM

Aplikasi Python dalam pengkomputeran saintifik termasuk analisis data, pembelajaran mesin, simulasi berangka dan visualisasi. 1.Numpy menyediakan susunan pelbagai dimensi yang cekap dan fungsi matematik. 2. Scipy memanjangkan fungsi numpy dan menyediakan pengoptimuman dan alat algebra linear. 3. Pandas digunakan untuk pemprosesan dan analisis data. 4.Matplotlib digunakan untuk menghasilkan pelbagai graf dan hasil visual.

Python dan C: Mencari alat yang betulPython dan C: Mencari alat yang betulApr 19, 2025 am 12:04 AM

Sama ada untuk memilih Python atau C bergantung kepada keperluan projek: 1) Python sesuai untuk pembangunan pesat, sains data, dan skrip kerana sintaks ringkas dan perpustakaan yang kaya; 2) C sesuai untuk senario yang memerlukan prestasi tinggi dan kawalan asas, seperti pengaturcaraan sistem dan pembangunan permainan, kerana kompilasi dan pengurusan memori manualnya.

Python untuk sains data dan pembelajaran mesinPython untuk sains data dan pembelajaran mesinApr 19, 2025 am 12:02 AM

Python digunakan secara meluas dalam sains data dan pembelajaran mesin, terutamanya bergantung pada kesederhanaannya dan ekosistem perpustakaan yang kuat. 1) PANDAS digunakan untuk pemprosesan dan analisis data, 2) Numpy menyediakan pengiraan berangka yang cekap, dan 3) SCIKIT-Learn digunakan untuk pembinaan dan pengoptimuman model pembelajaran mesin, perpustakaan ini menjadikan Python alat yang ideal untuk sains data dan pembelajaran mesin.

Pembelajaran Python: Adakah 2 jam kajian harian mencukupi?Pembelajaran Python: Adakah 2 jam kajian harian mencukupi?Apr 18, 2025 am 12:22 AM

Adakah cukup untuk belajar Python selama dua jam sehari? Ia bergantung pada matlamat dan kaedah pembelajaran anda. 1) Membangunkan pelan pembelajaran yang jelas, 2) Pilih sumber dan kaedah pembelajaran yang sesuai, 3) mengamalkan dan mengkaji semula dan menyatukan amalan tangan dan mengkaji semula dan menyatukan, dan anda secara beransur-ansur boleh menguasai pengetahuan asas dan fungsi lanjutan Python dalam tempoh ini.

Python untuk Pembangunan Web: Aplikasi UtamaPython untuk Pembangunan Web: Aplikasi UtamaApr 18, 2025 am 12:20 AM

Aplikasi utama Python dalam pembangunan web termasuk penggunaan kerangka Django dan Flask, pembangunan API, analisis data dan visualisasi, pembelajaran mesin dan AI, dan pengoptimuman prestasi. 1. Rangka Kerja Django dan Flask: Django sesuai untuk perkembangan pesat aplikasi kompleks, dan Flask sesuai untuk projek kecil atau sangat disesuaikan. 2. Pembangunan API: Gunakan Flask atau DjangorestFramework untuk membina Restfulapi. 3. Analisis Data dan Visualisasi: Gunakan Python untuk memproses data dan memaparkannya melalui antara muka web. 4. Pembelajaran Mesin dan AI: Python digunakan untuk membina aplikasi web pintar. 5. Pengoptimuman Prestasi: Dioptimumkan melalui pengaturcaraan, caching dan kod tak segerak

Python vs C: Meneroka Prestasi dan KecekapanPython vs C: Meneroka Prestasi dan KecekapanApr 18, 2025 am 12:20 AM

Python lebih baik daripada C dalam kecekapan pembangunan, tetapi C lebih tinggi dalam prestasi pelaksanaan. 1. Sintaks ringkas Python dan perpustakaan yang kaya meningkatkan kecekapan pembangunan. 2. Ciri-ciri jenis kompilasi dan kawalan perkakasan meningkatkan prestasi pelaksanaan. Apabila membuat pilihan, anda perlu menimbang kelajuan pembangunan dan kecekapan pelaksanaan berdasarkan keperluan projek.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

Dreamweaver Mac版

Dreamweaver Mac版

Alat pembangunan web visual

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa

SecLists

SecLists

SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)