如何在python django中处理简单表单提交?

如何在python django中处理简单表单提交?,django,Django,您好,我正在尝试处理django中的简单表单提交。但是经过几个小时的尝试之后。我收到csrf验证失败错误。我搜索了很多,但到目前为止还没有找到解决方案 这是我的密码 def index(request): if request.method == 'POST': username = request.POST.get('username') useremail = request.POST.get('useremail') context = {

您好,我正在尝试处理django中的简单表单提交。但是经过几个小时的尝试之后。我收到csrf验证失败错误。我搜索了很多,但到目前为止还没有找到解决方案

这是我的密码

def index(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        useremail = request.POST.get('useremail')
    context = {
        'username': username,
        'useremail': useremail
    }

    template = loader.get_template('responsepage.html')
    return HttpResponse(template.render(context, request))
else:
    template = loader.get_template('formpage.html')
    return HttpResponse(template.render())
这是我的表格

<form method="post" action="/getdata/">
    {{% csrf_token %}}
    <input type="text" name="username" />
    <input type="email" name="useremail" />
</form>

{{%csrf_令牌%}

我已经在这里编写了csrf_令牌变量。但我仍然得到了与csrf验证失败相同的错误

如果使用
formpage.html
模板上的csrf标记,则需要使用
请求
对象呈现模板

template = loader.get_template('formpage.html')
return HttpResponse(template.render(request=request))
您可能希望通过使用
render
快捷方式来简化代码:

from django.shortcuts import render

def index(request):
    if request.method == 'POST':
        ...
        return render(request, 'responsepage.html', context)
    else:
        return render(request, 'formpage.html')

您应该将其放在视图中的表单标记之后

{% csrf_token %}
在渲染输出时使用

return render(request, 'responsepage.html', context)
Django提供此安全功能以防止跨站点请求伪造。如果您不想使用此安全功能,可以通过放置

@csrf_exempt

来源:

您的模板中可能缺少{%csrf_token%}(您尚未发布该模板),您尝试和搜索了数小时的模板是否可能重复?我觉得很难相信。关于如何在Django进行CSRF验证,已经有很多结果。将您的问题标记为其中一个问题的可能副本,直到您向我们提供有关您的问题失败之处的更多信息。尽管在放置此注释后它仍在工作。但我想用csrf