Django:表单CSRF验证失败

时间:2021-01-22 16:09:10

标签: django

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

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

admin.py

class NewsletterAdmin(admin.ModelAdmin):
    list_display = ('name','publish_date')
admin.site.register(Newsletter, NewsletterAdmin)

urls.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>

<div>
    <form method = 'post'>
        {% csrf_token %} {{ form.as_p }} 
        <input name = 'name' type = 'text' value = "{{ newsletter.name }}">
        <input name = 'email' type = 'email' value = "{{ newsletter.email }}">
        <button type = 'submit' name = 'save'>Send</button>
    </form>
</div>

1 个答案:

答案 0 :(得分:0)

像这样写你的表格:

<form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit" value="Submit"></button>
</form>