如何解决save() 方法不会将表单数据保存到数据库Django ModelForm
我正在使用 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>
,
看起来您的表单操作正在将表单发送到您的主页,而不是指向 enter_task 视图的 URL。如果没有看到您的 urls.py,我不确定这一点,但这就是我要检查的内容。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。