Get Done ✅ : Django To Do リストを作成するためのステップバイステップ ガイド
導入
私たちの多忙な生活において、タスクを効果的に管理することは非常に重要であり、To Do リスト アプリケーションは、整理整頓を保つための優れたツールとなります。このブログ投稿では、Python の強力で多用途な Web フレームワークである Django を使用した To Do リスト アプリケーションの開発について説明します。 django-todoList というタイトルのこのプロジェクトは、ユーザーが日常のタスクをシームレスに作成、管理、追跡できるように設計されています。
前提条件
始める前に、以下のものがあることを確認してください。
Python がインストールされている (バージョン 3.8 以降が望ましい)。
Django がインストールされました。そうでない場合は、次のコマンドを使用してインストールできます。
pip install django
- Django の仕組みについての基本的な理解と、Python と HTML についての知識。
ステップ 1: プロジェクトのセットアップ
1.1 Django プロジェクトの作成
まず、次のコマンドを使用して新しい Django プロジェクトを作成します。
django-admin startproject mysite
プロジェクト フォルダーに移動します:
cd mysite
1.2 Django アプリを作成する
次に、プロジェクト内にアプリを作成します。これを todoList と呼びます:
python manage.py startapp todoList
ステップ 2: モデルを定義する
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
このモデルには、タイトル、説明、期限、各タスクの詳細を保存する完了などのフィールドが含まれています。また、ユーザー外部キーを介して各タスクをユーザーに関連付けます。
2.1 データベースの移行
モデルの準備ができたら、移行を実行してデータベースにこのモデルのテーブルを作成します。
python manage.py makemigrations python manage.py migrate
ステップ 3: フォームを作成する
タスクを作成および更新するためのユーザー入力を処理するフォームが必要です。 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 を使用して、タスク モデルのフォーム フィールドを自動的に作成します。
ステップ 4: ビューを定義する
次に、タスクの作成、更新、一覧表示などのユーザー リクエストを処理するビューを作成する必要があります。
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 は、ログインしたユーザーのみがこれらのビューにアクセスできるようにします。
ステップ 5: URL を構成する
todoList/urls.py で、URL をそれぞれのビューにマップします。
pip install django
これらの URL パターンは、各ビューを特定の URL にマップします。たとえば、タスク リストはアプリのルート URL に表示され、ユーザーは特定の URL にアクセスしてタスクを作成、編集、削除できます。
ステップ 6: テンプレートを作成する
ビューをレンダリングするために次の HTML テンプレートを作成します:
6.1 基本.html
基本テンプレートは、すべてのページに一貫したレイアウトを提供します:
django-admin startproject mysite
ステップ 8: ユーザー認証を追加する
views.py では、Django の組み込みユーザー認証ビューを使用して、ユーザーの登録とログインを処理できます。たとえば、UserCreationForm を使用して、ユーザーがサインアップできるようにすることができます。
cd mysite
ステップ 8: サーバーを実行する
すべてのセットアップが完了したら、サーバーを実行できます。
python manage.py startapp todoList
http://127.0.0.1:8000/todoList にアクセスして、To-Do リスト アプリの動作を確認してください。
mysite フォルダー内の settings.py と urls.py について
設定.py
settings.py ファイルは、すべての Django プロジェクトの重要な部分です。これには、データベース設定、インストールされているアプリ、ミドルウェア、静的ファイル構成など、プロジェクトの構成設定が含まれています。このファイルはプロジェクトの動作を制御し、Django がさまざまなコンポーネント間の点を結びつけることを可能にします。
GetDone To-Do リスト アプリの settings.py の主要な設定の概要を以下に示します。
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 を追加しました。
URL.py
Django では、urls.py ファイルがビューへの HTTP リクエストのルーティングを処理します。ここで、URL パターン (/tasks/、/login/ など) を、それらを処理する対応するビューにマップします。
mysite/urls.py には、通常、プロジェクト全体の URL を含めて、アプリレベルの urls.py ファイルにリンクします。
GetDone アプリでの urls.py は次のようになります:
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 のアーキテクチャにより、さまざまなファイルとコンポーネント間のスムーズな通信が可能になります。
URL とビュー:
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 サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











LinuxターミナルでPythonバージョンを表示する際の許可の問題の解決策PythonターミナルでPythonバージョンを表示しようとするとき、Pythonを入力してください...

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

PythonのPandasライブラリを使用する場合、異なる構造を持つ2つのデータフレーム間で列全体をコピーする方法は一般的な問題です。 2つのデータがあるとします...

UvicornはどのようにしてHTTPリクエストを継続的に聞きますか? Uvicornは、ASGIに基づく軽量のWebサーバーです。そのコア機能の1つは、HTTPリクエストを聞いて続行することです...

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

Investing.comの反クラウリング戦略を理解する多くの人々は、Investing.com(https://cn.investing.com/news/latest-news)からのニュースデータをクロールしようとします。
