我使用Django制作了一个简单的待办事项列表,除了在表单中输入的任何数据不会保存到数据库(也不会显示)之外,它都可以正常工作。
我的models.py:
from django.db import models
class TodoListItem(models.Model):
content = models.TextField()
def __str__(self):
return self.content
forms.py:
from .models import TodoListItem
from django.forms import ModelForm
class TodoListForm(forms.ModelForm):
class Meta:
model = TodoListItem
fields = ['content']
views.py:
from django import forms
from django.shortcuts import render
from django.http import HttpResponseRedirect, HttpResponse
from .models import TodoListItem
from .forms import TodoListForm
def home(request):
context = {
'items': TodoListItem.objects.all()
}
return render(request, 'home.html', context)
def enter_task(request):
if request.method == 'POST':
form = TodoListForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('/')
else:
return HttpResponse('Form not valid')
else:
form = TodoListForm()
return render(request, 'form.html', {'form': form})
我是根据文档进行操作的,我无法理解的是为什么该行在其下方form.save()
时却无法执行return HttpResponseRedirect('/')
。
form.html文件,以防万一:
<!DOCTYPE html>
<html>
<head>
<title>Add task</title>
<h1>Add Task</h1>
</head>
<body>
<form action="{% url 'home' %}" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit">
</form>
</body>
</html>
我知道错误必须在views.py中,因为我使用管理站点手动将其添加到TodoListItem,并且html文件确实完美地显示了它,仅当我提交表单时,它就永远不会保存到上述模型中。
可能是您输入的表单操作不正确
<form action="{% url 'home' %}" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit">
</form>
您必须将此网址放入表单操作中 enter_task
<form action="{% url 'enter_task' %}" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit">
</form>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句