ホームページ >バックエンド開発 >Python チュートリアル >Get Done ✅ : Django To Do リストを作成するためのステップバイステップ ガイド
私たちの多忙な生活において、タスクを効果的に管理することは非常に重要であり、To Do リスト アプリケーションは、整理整頓を保つための優れたツールとなります。このブログ投稿では、Python の強力で多用途な Web フレームワークである Django を使用した To Do リスト アプリケーションの開発について説明します。 django-todoList というタイトルのこのプロジェクトは、ユーザーが日常のタスクをシームレスに作成、管理、追跡できるように設計されています。
Python がインストールされている (バージョン 3.8 以降が望ましい)。
Django がインストールされました。そうでない場合は、次のコマンドを使用してインストールできます。
pip install django
まず、次のコマンドを使用して新しい Django プロジェクトを作成します。
django-admin startproject mysite
プロジェクト フォルダーに移動します:
cd mysite
次に、プロジェクト内にアプリを作成します。これを todoList と呼びます:
python manage.py startapp todoList
Django では、モデルを使用してデータの構造を定義します。 GetDone To-Do アプリの場合、タスクを表すモデルが必要です。
todoList/models.py に移動し、タスク モデルを定義します。
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
このモデルには、タイトル、説明、期限、各タスクの詳細を保存する完了などのフィールドが含まれています。また、ユーザー外部キーを介して各タスクをユーザーに関連付けます。
モデルの準備ができたら、移行を実行してデータベースにこのモデルのテーブルを作成します。
python manage.py makemigrations python manage.py migrate
タスクを作成および更新するためのユーザー入力を処理するフォームが必要です。 todoList/forms.py で、TaskForm を作成します:
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
TaskForm は Django の ModelForm を使用して、タスク モデルのフォーム フィールドを自動的に作成します。
次に、タスクの作成、更新、一覧表示などのユーザー リクエストを処理するビューを作成する必要があります。
todoList/views.py で、ビューを定義します。
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: ログインしているユーザーのすべてのタスクをリストします。
-TaskCreate: タスクの作成を処理します。
-TaskUpdate: ユーザーがタスクを更新できるようにします。
-TaskDelete: タスクを削除するための確認ページを提供します。
LoginRequiredMixin は、ログインしたユーザーのみがこれらのビューにアクセスできるようにします。
todoList/urls.py で、URL をそれぞれのビューにマップします。
pip install django
これらの URL パターンは、各ビューを特定の URL にマップします。たとえば、タスク リストはアプリのルート URL に表示され、ユーザーは特定の URL にアクセスしてタスクを作成、編集、削除できます。
ビューをレンダリングするために次の HTML テンプレートを作成します:
基本テンプレートは、すべてのページに一貫したレイアウトを提供します:
django-admin startproject mysite
views.py では、Django の組み込みユーザー認証ビューを使用して、ユーザーの登録とログインを処理できます。たとえば、UserCreationForm を使用して、ユーザーがサインアップできるようにすることができます。
cd mysite
すべてのセットアップが完了したら、サーバーを実行できます。
python manage.py startapp todoList
http://127.0.0.1:8000/todoList にアクセスして、To-Do リスト アプリの動作を確認してください。
settings.py ファイルは、すべての Django プロジェクトの重要な部分です。これには、データベース設定、インストールされているアプリ、ミドルウェア、静的ファイル構成など、プロジェクトの構成設定が含まれています。このファイルはプロジェクトの動作を制御し、Django がさまざまなコンポーネント間の点を結びつけることを可能にします。
GetDone To-Do リスト アプリの settings.py の主要な設定の概要を以下に示します。
インストールされているアプリ: INSTALLED_APPS リストには、プロジェクトで使用されるすべてのアプリを登録します。例:
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
ここでは、ユーザー認証、管理パネル、静的ファイル用に Django が提供するデフォルト アプリに加えて、タスクを管理するアプリである todoList を追加しました。
Django では、urls.py ファイルがビューへの HTTP リクエストのルーティングを処理します。ここで、URL パターン (/tasks/、/login/ など) を、それらを処理する対応するビューにマップします。
mysite/urls.py には、通常、プロジェクト全体の URL を含めて、アプリレベルの urls.py ファイルにリンクします。
GetDone アプリでの urls.py は次のようになります:
プロジェクト レベルの urls.py (mysite/urls.py): mysite フォルダー内の urls.py ファイルは、Django プロジェクト全体のメイン ルーターです。これには、管理パネル、認証、アプリの特定の URL へのリンクの URL が含まれます。以下に例を示します:
pip install django
path('admin/', admin.site.urls): この行には Django 管理パネルが含まれています。
path('accounts/', include('django.contrib.auth.urls')): これには、ログイン、ログアウト、パスワード管理のための組み込みの認証 URL が含まれます。
path('', include('todoList.urls')): これにはアプリ固有の URL (todoList/urls.py で定義) が含まれるため、ユーザーはタスクやその他の機能をナビゲートできます。
アプリレベルの urls.py (todoList/urls.py): このファイルは、特定の URL を todoList アプリ内のビューにマップします。これには、タスクの表示、タスクの作成、およびその他のタスク関連アクションのためのパスが含まれています。例:
django-admin startproject mysite
TodoListView.as_view(): このビューには、ログイン ユーザーのすべてのタスクがリストされます。
TaskCreate.as_view(): このビューはタスク作成フォームを処理します。
TaskUpdate.as_view(): このビューはタスク更新フォームを処理します。
TaskDelete.as_view(): このビューは、タスク削除確認ページを処理します。
Django のアーキテクチャにより、さまざまなファイルとコンポーネント間のスムーズな通信が可能になります。
urls.py は、タスクの作成やリストの表示などのビューに URL をマップします。ビューは views.py.
で定義されます。ビューは、モデル (models.py で定義) と対話して、データ (タスク) を取得および操作します。たとえば、TodoListView では、ビューは Task.objects.filter(user=self.request.user) を使用してログイン ユーザーに関連付けられたタスクを取得します。
フォーム (forms.py の TaskForm など) はユーザー入力を処理し、モデルと対話してデータを検証して保存します。
テンプレートは HTML で最終出力をレンダリングし、ビューから渡されたデータを表示し、フォームを介したユーザー入力を処理します。
これらの手順により、Django を使用して完全に機能する ToDo リスト アプリを構築できました。ユーザー認証、タスク管理 (作成、編集、削除) を実装し、Django の MVC (MTV) アーキテクチャがモデル、ビュー、テンプレート、URL 間のスムーズな通信をどのように促進するかを学びました。このガイドは、将来的により複雑な Django アプリケーションを構築するための強固な基盤として機能します。
アプリケーションの完全なコードは、
で複製できます。
cd mysite
コーディングを楽しんでください! ?
以上がGet Done ✅ : Django To Do リストを作成するためのステップバイステップ ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。