为什么此代码不将 task 附加到 tasks 我一直在学习 CS50 课程,在应用此代码后,我没有看到预期的结果 我尝试了所有方法,但表单仍然不会附加到任务
列表中
from django.shortcuts import render
from django import forms
from django.http import HttpResponseRedirect
from django.urls import reverse
class NewTaskForm(forms.Form):
task = forms.CharField(label="Task Text")
tasks = ['finish', 'study', 'reset']
# Create your views here.
def index(request):
return render(request, "task/index.html",{
"tasks":tasks
})
def add(request):
if request.method =="post":
form = NewTaskForm(request.post)
if form.is_valid():
task = form.cleaned_data["task"]
tasks.append(task)
return HttpResponseRedirect(reverse("task:index"))
else:
return render(request, "task/add.html", {
"form":form
})
return render(request, "task/add.html",{
"form":NewTaskForm()
})
有一些问题,方法总是大写,数据存储在
request.POST
:
from django.shortcuts import redirect
def add(request):
if request.method == 'POST':
form = NewTaskForm(request.POST, request.FILES)
if form.is_valid():
task = form.cleaned_data["task"]
tasks.append(task)
return redirect('task:index')
else:
form = NewTaskForm()
return render(request, 'task/add.html', {'form': form})
话虽这么说,将数据存储在(全局)变量中是一个非常糟糕的主意。它引入了全局状态,这是一种严重的反模式。
我正在做同样的课程,也遇到同样的问题。我花了时间耐心地寻找哪里出错了,但我已经按照导师在教程中所做的方式完成了所有事情