📜  Python|使用 Django 的 ToDo webapp

📅  最后修改于: 2022-05-13 01:55:51.987000             🧑  作者: Mango

Python|使用 Django 的 ToDo webapp

先决条件: django安装
Django 是一个基于高级Python Web 框架的 Web 框架,允许快速开发和简洁、实用的设计。今天我们将创建一个 todo 应用程序,以了解 Django 的基础知识。在这个网络应用程序中,可以创建像 Google Keep 或 Evernote 这样的笔记。
所需模块:

  • django:安装 django
  • 脆皮表格:
pip install --upgrade django-crispy-forms

基本设置:
通过以下命令启动项目 -

django-admin startproject todo-site

将目录更改为 todo-site –

cd todo-site

启动服务器 - 通过在终端中键入以下命令启动服务器 -

python manage.py runserver

要检查服务器是否正在运行,请转到 Web 浏览器并输入 http://127.0.0.1:8000/ 作为 URL。
现在按下停止服务器

ctrl-c

现在让我们创建一个应用程序。

python manage.py startapp todo

通过执行转到 todo/ 文件夹:cd todo 并使用 index.html 文件创建一个文件夹:templates/todo/index.html
使用文本编辑器打开项目文件夹。目录结构应如下所示:

现在在settings.py的 todo_site 中添加 todo app 和 crispty_form 。

编辑 todo_site 中的 urls.py 文件:

Python3
from django.contrib import admin
from django.urls import path
from todo import views
 
urlpatterns = [
    #####################home_page###########################################
    path('', views.index, name="todo"),
    ####################give id no. item_id name or item_id=i.id ############
    # pass item_id as primary key to remove that the todo with given id
    path('del/', views.remove, name="del"),
    ########################################################################
    path('admin/', admin.site.urls),
]


Python3
from django.db import models
from django.utils import timezone
 
class Todo(models.Model):
    title=models.CharField(max_length=100)
    details=models.TextField()
    date=models.DateTimeField(default=timezone.now)
 
    def __str__(self):
        return self.title


Python3
from django.shortcuts import render, redirect
from django.contrib import messages
 
## import todo form and models
 
from .forms import TodoForm
from .models import Todo
 
###############################################
 
def index(request):
 
    item_list = Todo.objects.order_by("-date")
    if request.method == "POST":
        form = TodoForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('todo')
    form = TodoForm()
 
    page = {
             "forms" : form,
             "list" : item_list,
             "title" : "TODO LIST",
           }
    return render(request, 'todo/index.html', page)
 
 
 
### function to remove item, it receive todo item_id as primary key from url ##
def remove(request, item_id):
    item = Todo.objects.get(id=item_id)
    item.delete()
    messages.info(request, "item removed !!!")
    return redirect('todo')


Python3
from django import forms
from .models import Todo
 
class TodoForm(forms.ModelForm):
    class Meta:
        model = Todo
        fields="__all__"


在 todo 中编辑 models.py :

Python3

from django.db import models
from django.utils import timezone
 
class Todo(models.Model):
    title=models.CharField(max_length=100)
    details=models.TextField()
    date=models.DateTimeField(default=timezone.now)
 
    def __str__(self):
        return self.title

在 todo 中编辑 views.py :

Python3

from django.shortcuts import render, redirect
from django.contrib import messages
 
## import todo form and models
 
from .forms import TodoForm
from .models import Todo
 
###############################################
 
def index(request):
 
    item_list = Todo.objects.order_by("-date")
    if request.method == "POST":
        form = TodoForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('todo')
    form = TodoForm()
 
    page = {
             "forms" : form,
             "list" : item_list,
             "title" : "TODO LIST",
           }
    return render(request, 'todo/index.html', page)
 
 
 
### function to remove item, it receive todo item_id as primary key from url ##
def remove(request, item_id):
    item = Todo.objects.get(id=item_id)
    item.delete()
    messages.info(request, "item removed !!!")
    return redirect('todo')

现在在 todo 中创建一个 forms.py :

Python3

from django import forms
from .models import Todo
 
class TodoForm(forms.ModelForm):
    class Meta:
        model = Todo
        fields="__all__"

将模型注册到管理员:

导航到 templates/todo/index.html 并编辑它:链接到 index.html 文件
进行迁移并迁移它

python manage.py makemigrations
python manage.py migrate

现在你可以运行服务器来查看你的 todo 应用了

python manage.py runserver