我相信学习全栈开发的最佳方法是使用该语言创建一个具有简单前后端/端和数据库连接的 CRUD 应用程序。
因此,本指南将引导您使用 Django 创建一个简单的 CRUD(创建、读取、更新、删除)Todo 应用程序。我们将设置项目,创建应用程序,并在 Django 推荐的目录结构中组织所有内容。
在我们开始之前,请确保您已经:
django-admin startproject todo_project cd todo_project
python manage.py startapp todo
您的文件夹应如下所示:
todo_project/ ├── manage.py ├── todo/ # App directory created │ ├── migrations/ │ ├── __init__.py │ ├── admin.py │ ├── apps.py │ ├── models.py │ ├── tests.py │ ├── views.py └── todo_project/ ├── __init__.py ├── asgi.py ├── settings.py ├── urls.py ├── wsgi.py
INSTALLED_APPS = [ # Other installed apps 'todo', ]
添加以下代码以创建一个模型,其中包含任务(描述)和已完成(状态)字段。
from django.db import models class Todo(models.Model): task = models.CharField(max_length=200) completed = models.BooleanField(default=False) def __str__(self): return self.task
定义模型后,运行以下命令为此模型创建数据库表:
python manage.py makemigrations python manage.py migrate
在 todo/views.py 中定义用于创建、列出、更新和删除待办事项的视图:
from django.shortcuts import render, redirect from .models import Todo # Create a new Todo def create_todo(request): if request.method == 'POST': task = request.POST['task'] Todo.objects.create(task=task) return redirect('list_todos') return render(request, 'todo/create_todo.html') # List all Todos def list_todos(request): todos = Todo.objects.all() return render(request, 'todo/list_todos.html', {'todos': todos}) # Update a Todo def update_todo(request, todo_id): todo = Todo.objects.get(id=todo_id) if request.method == 'POST': todo.task = request.POST['task'] todo.completed = 'completed' in request.POST todo.save() return redirect('list_todos') return render(request, 'todo/update_todo.html', {'todo': todo}) # Delete a Todo def delete_todo(request, todo_id): todo = Todo.objects.get(id=todo_id) todo.delete() return redirect('list_todos')
在 todo/urls.py 中定义每个视图的 URL:
from django.urls import path from . import views urlpatterns = [ path('', views.list_todos, name='list_todos'), path('create/', views.create_todo, name='create_todo'), path('update/<int:todo_id>/', views.update_todo, name='update_todo'), path('delete/<int:todo_id>/', views.delete_todo, name='delete_todo'), ]
在主 urls.py 文件中,包含应用程序的 URL:
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('', include('todo.urls')), ]
现在,在 todo 应用程序的 templates 目录中创建 HTML 模板。遵循以下结构:
todo/ ├── migrations/ ├── templates/ │ └── todo/ │ ├── list_todos.html │ ├── create_todo.html │ └── update_todo.html ├── models.py ├── views.py └── ...
mkdir -p todo/templates/todo
显示任务列表并提供用于添加、编辑或删除任务的链接。
django-admin startproject todo_project cd todo_project
用于添加新任务的表单。
python manage.py startapp todo
用于编辑现有任务的表单。
todo_project/ ├── manage.py ├── todo/ # App directory created │ ├── migrations/ │ ├── __init__.py │ ├── admin.py │ ├── apps.py │ ├── models.py │ ├── tests.py │ ├── views.py └── todo_project/ ├── __init__.py ├── asgi.py ├── settings.py ├── urls.py ├── wsgi.py
现在一切都已设置完毕,运行 Django 开发服务器来测试应用程序:
INSTALLED_APPS = [ # Other installed apps 'todo', ]
在浏览器中访问http://127.0.0.1:8000/。您应该看到待办事项列表并能够创建、更新和删除任务。
from django.db import models class Todo(models.Model): task = models.CharField(max_length=200) completed = models.BooleanField(default=False) def __str__(self): return self.task
就是这样!您已成功创建带有 CRUD 界面的 Django Todo 应用程序。这种结构是可扩展的,您现在可以添加其他功能或使用 CSS 设计应用程序的样式。快乐编码!
以上是从头开始构建 Django CRUD Todo 应用程序的详细内容。更多信息请关注PHP中文网其他相关文章!