django中的csrf错误 [英] csrf error in django

查看:114
本文介绍了django中的csrf错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想实现我的网站的登录。我基本上复制并粘贴了Django Book中的以下位。但是,在提交我的注册表单时,我仍然收到一个错误(CSRF验证失败,请求中止)。有人可以告诉我发生了什么错误以及如何解决?



这是我的代码:



.py:

 #在这里创建您的意见。 
从django导入表单
从django.contrib.auth.forms导入UserCreationForm
从django.http导入HttpResponseRedirect
从django.shortcuts import render_to_response

def register(request):
如果request.method =='POST':
form = UserCreationForm(request.POST)
如果form.is_valid():
new_user = form .save()
return HttpResponseRedirect(/ books /)
else:
form = UserCreationForm()
返回render_to_response(registration / register.html,{
'form':form,
})

register.html:

 < html> 
< body>

{%block title%}创建一个帐户{%endblock%}

{%block content%}
< h1>创建一个帐户< / h1> ;

< form action =method =post> {%csrf_token%}
{{form.as_p}}
< input type =submit value =创建帐户>
< / form>
{%endblock%}
< / body>
< / html>


解决方案

我有完全相同的问题 - 蓝辣椒答案让我走上正轨将一个RequestContext添加到表单视图中可以解决问题。

  from django.template import RequestContext 

和:

  def register )
如果request.method =='POST':
form = UserCreationForm(request.POST)
如果form.is_valid():
new_user = form.save()
return HttpResponseRedirect(/ books /)
else:
form = UserCreationForm()
c = {'form':form}
return render_to_response( register.html,c,context_instance = RequestContext(request))

/ p>

I want to realize a login for my site. I basically copied and pasted the following bits from the Django Book together. However I still get an error (CSRF verification failed. Request aborted.), when submitting my registration form. Can somebody tell my what raised this error and how to fix it?

Here is my code:

views.py:

# Create your views here.
from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response

def register(request):
    if request.method == 'POST':
        form = UserCreationForm(request.POST)
        if form.is_valid():
            new_user = form.save()
            return HttpResponseRedirect("/books/")
    else:
        form = UserCreationForm()
    return render_to_response("registration/register.html", {
        'form': form,
    })

register.html:

<html>
<body>

{% block title %}Create an account{% endblock %}

{% block content %}
  <h1>Create an account</h1>

  <form action="" method="post">{% csrf_token %}
      {{ form.as_p }}
      <input type="submit" value="Create the account">
  </form>
{% endblock %}
</body>
</html>

解决方案

I was having the exact same issue - and Blue Peppers' answer got me on the right track. Adding a RequestContext to your form view fixes the problem.

from django.template import RequestContext

and:

def register(request):
if request.method == 'POST':
    form = UserCreationForm(request.POST)
    if form.is_valid():
        new_user = form.save()
        return HttpResponseRedirect("/books/")
else:
    form = UserCreationForm()
c = {'form': form}
return render_to_response("registration/register.html", c, context_instance=RequestContext(request))

This fixed it for me.

这篇关于django中的csrf错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆