Django:表单CSRF验证失败

Django:表单CSRF验证失败,django,Django,这是我的第一个Django项目,但是,我在提交表单时遇到了问题。 我收到“CSRF验证失败”。这是一个非常简单的表单,只有两个字段(frontpage)和一次提交即可显示同一页面 views.py def newsletter(request): if request.method == 'POST': name = request.POST('name') email = request.POST('email') newslette

这是我的第一个Django项目,但是,我在提交表单时遇到了问题。 我收到“CSRF验证失败”。这是一个非常简单的表单,只有两个字段(frontpage)和一次提交即可显示同一页面

views.py

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>