Django 保存修改表单后返回 “This field is required.”
简述:
创建一个博客项目,Django项目其命名为Blog。
这个项目中,创建一个名为blogs的应用程序,在其中创建一个名为BlogPost 的模型。这个模型包含title 、text 和date_added 等字段。
创建一个主页,在其中按时间顺序显示所有的帖子。
创建两个表单,其中一个用于发布新帖子,另一个用于编辑既有的帖子。
我在已经完成完成到了最后的部分,即编辑帖子的功能
主页部分显示如下
点击“编辑此博客”可以来到编辑博客页面
对博客内容做一些修改
点击“保存修改”按钮来保存修改,会自动跳转为“This field is required.”
(对字段 title 和 text 同时做出修改也是一样的情况,出现This field is required.即无法保存表单修改)
URL模式
主页
re_path(r'^$',views.blogposts,name = 'blogposts')
编辑博客页面
re_path(r'^edit_blog/(?P<blog_id>\d+)/$',views.edit_blog,name = 'edit_blog')
视图函数(编辑博客界面)
def edit_blog(request,blog_id):
'''编辑博客'''
#获取当前博客的id
blog = BlogPost.objects.get(id = blog_id)
t = blog.title
#处理两种请求情形
if request.method != 'POST':
#返回使用当前内容填充的表单
b = BlogPostForm(instance = blog)
else:
#当请求为POST时,利用当前内容和request.POST的内容填充表单
b = BlogPostForm(instance = blog,data = request.POST)
#当内容合格时,保存内容
if b.is_valid():
b.save()
#在保存之后返回博客主页
return HttpResponseRedirect(reverse('blogs:blogposts'))
#将内容发送给模板
context = {'blog':blog,'t':t,'b':b}
return render(request,'blogs/edit_blog.html',context)
在预想中,调用save之后应该返回URL模式 blogs:blogposts (主页)
模板edit_blog.html
{% extends "blogs/base.html" %}
{% block content %}
<p>{{ t }}</p>
<p>{{ b }}</p>
<form action="{% url 'blogs:edit_blog' blog.id %}" method="post">
{% csrf_token %}
{{ form.as_p }}
<button name="submit">保存修改</button>
</form>
{% endblock content %}
请问这是否是返回页面的环节出了问题,还是关于表单实例中有未设置的地方,希望有前辈能指点迷津
知识的盲区,我想我还得再去学习一些知识然后回来解决这个问题。