Django:表单CSRF验证失败
这是我的第一个Django项目,但是,我在提交表单时遇到了问题。 我收到“CSRF验证失败”。这是一个非常简单的表单,只有两个字段(frontpage)和一次提交即可显示同一页面 views.pyDjango:表单CSRF验证失败,django,Django,这是我的第一个Django项目,但是,我在提交表单时遇到了问题。 我收到“CSRF验证失败”。这是一个非常简单的表单,只有两个字段(frontpage)和一次提交即可显示同一页面 views.py def newsletter(request): if request.method == 'POST': name = request.POST('name') email = request.POST('email') newslette
def newsletter(request):
if request.method == 'POST':
name = request.POST('name')
email = request.POST('email')
newsletter = Newsletter(name = name, email = email)
newsletter.save()
return HttpResponseRedirect('')
models.py
class Newsletter(models.Model):
name = models.CharField(max_length = 200)
email = models.CharField(max_length=100)
publish_date = models.DateTimeField(default = datetime.now, blank = True)
def __str__(self):
return self.name
管理员
class NewsletterAdmin(admin.ModelAdmin):
list_display = ('name','publish_date')
admin.site.register(Newsletter, NewsletterAdmin)
url.py
urlpatterns = [
path('admin/', admin.site.urls),
path('', home_view, name = 'home'),
path('events/', events, name = 'events'),
path('news/', news, name = 'mainnews'),
path('about/', about, name = 'about'),
path('', newsletter),
] + static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)
html>
{%csrf_令牌%}{{form.as_p}}
发送
按如下方式填写表格:
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit" value="Submit"></button>
</form>
{%csrf_令牌%}
{{form.as_p}}
您的HTML是什么样子的?您需要确保CSRF值在表单中。您需要将{%CSRF\u token%}
添加到表单中。您是如何路由到视图的<代码>主页视图和时事通讯
的模式是否相同?时事通讯视图永远不会以这种方式使用。此外,我在新闻稿视图中没有看到任何呈现模板的代码?主页视图是frontpage。我想在提交时事通讯表单时,将用户重定向到同一页面路径(“”,主页视图,名称='home'),
和路径(“”,时事通讯),
您看到问题了吗?任何没有路径的url最终都会发送到home_view。表单已提交,但在管理面板中,您的models.py
中的时事通讯为空。它应该是models.EmailField
,不是models.CharField
我将CharField更改为models.EmailField,但新闻稿仍然是空的更改新闻稿的url路径
查看原始内容
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit" value="Submit"></button>
</form>