在djang中Shownig csrf验证失败

2024-04-18 22:48:53 发布

您现在位置:Python中文网/ 问答频道 /正文

当我单击“提交”时,显示的是csrf验证失败事件,尽管我使用了{%csrftoken%} 这是我的视图.py公司名称:

@csrf_protect
def register(request):
 if request.method == 'POST':
    form = RegistrationForm(request.POST)
    if form.is_valid():
        user = User.objects.create_user(
        username=form.cleaned_data['username'],
        password=form.cleaned_data['password1'],
        email=form.cleaned_data['email']
        )
        return HttpResponseRedirect('/login/')
else:
    form = RegistrationForm()
catagories = Company_Profile.objects.all()
variables = RequestContext(request, {
'form': form,'catagories' : catagories
})

return render_to_response(
'index1.html',
variables

)

我的html页面index1.html s:

^{pr2}$

我没有用表格as\p因为我需要单独应用css。。 请帮帮我

编辑: 我知道答案了 实际的问题是我有硬编码的csrf,即 在

所以去掉它,它工作得很好。感谢@Daniel Roseman,他注意到了我的这一点,并感谢所有帮助我的人。在


Tags: formdatareturnifobjectsemailrequesthtml
2条回答

您应该将RequestContext作为render_to_response()的第三个参数传递:

return render_to_response('index1.html',
                          {'form': form, 'catagories': catagories},
                          RequestContext(request))

或者,作为更好的选择,使用render()函数而不是render_to_response()

^{pr2}$

您需要移动{%csrf\\u token%}标记-将其放入表单中。另外,如果您使用django.middleware.csrf.CsrfViewMiddleware,您不必手动csrf_保护您的视图。在

对于上下文实例,请尝试这样做:

def register(request):
     if request.method == 'POST':
         form = RegistrationForm(request.POST)
         if form.is_valid():
             user = User.objects.create_user(
             username=form.cleaned_data['username'],
             password=form.cleaned_data['password1'],
             email=form.cleaned_data['email']
             )
             return HttpResponseRedirect('/login/')
         else:
             form = RegistrationForm()
     catagories = Company_Profile.objects.all()
     variables = {'form': form,'catagories' : catagories}

     return render_to_response('index1.html', variables, context_instance=RequestContext(request))

相关问题 更多 >