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