from django.http.response import HttpResponseNotAllowed from django.shortcuts import redirect, render from django.utils.html import format_html from .models import Group, Task def index(request): welcome = "欢迎来到 Todolist 练习项目 Popup 应用主页!" index_content = format_html( """ 这是《100 小时后请叫我程序员》课程用于进行 Django 实践练习的网站,主要包括了以下几部分: """ ) ctx = dict( title="home", welcome=welcome, index_content=index_content, ) return render(request, "index.html", context=ctx) def about(request): title = "About" header = f"{title} Me" about_content = """ 这是一段简单的,About Me 页面。 它可以用来展示关于个人的一些信息,或者是简单的介绍。 例如: """.strip().splitlines() items = [ ("昵称", "100gle"), ("职业", "少数派作者"), ("编程语言", "Python、Golang、JavaScript 等等"), ] ctx = dict( title=title, header=header, about_content=about_content, items=items, ) return render(request, "about.html", context=ctx) def query_all_tasks(request): tasks = Task.objects.all() fields = ["序号", "任务名称", "优先级", "任务描述", "是否完成", "分组"] if Group.objects.count() == 0: groups = [ Group(name="收集箱"), Group(name="生活"), Group(name="工作"), ] Group.objects.bulk_create(groups) groups = Group.objects.all() ctx = dict( title="Task", tasks=tasks, fields=fields, groups=groups, ) return render(request, "tasks.html", context=ctx) def create_task(request): """create a task""" if request.method == "POST": name = request.POST.get("taskName") priority = request.POST.get("taskPriority") description = request.POST.get("taskDescription") group_id = request.POST.get("taskGroup") group = Group.objects.get(id=group_id) Task.objects.create( name=name, priority=priority, description=description, group=group ) return redirect("/tasks/") else: return HttpResponseNotAllowed(["POST"]) def update_task(request, task_id): """update a task""" task = Task.objects.get(id=task_id) task.is_done = False if task.is_done else True task.save() return redirect("/tasks/") def delete_task(request, task_id): """delete a task""" task = Task.objects.get(id=task_id) task.delete() return redirect("/tasks/")