- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近遇到了一个很奇怪的问题。我的模板中有一个表单,如下所示:
<form class="form" id="loginForm" role="form" action="/user/login/"
method="POST">
{% csrf_token %}
<div class="form-group">
<input type="email" class="form-control" id="email" name="email"
placeholder="Enter email" value="">
</div>
<div class="form-group">
<input type="password" class="form-control" id="password"
name="password" placeholder="Password" value="">
</div>
<div class="cl-effect-7">
<button type="submit" class="btn btn-primary">SIGN IN</button>
</div>
</form>
我收到了 CSRF token 丢失或不正确
。进一步深入挖掘,我发现虽然 csrftoken cookie 在浏览器中设置正确,但 POST 请求的 csrfmiddlewaretoken 为空值,因此它会抛出上述原因的错误.
这也是我的看法(虽然我怀疑它是否有任何问题)
def user_login(request):
context = RequestContext(request)
if request.method == 'POST':
email = request.POST['email']
password = request.POST['password']
user = authenticate(username=email, password=password)
if user:
if user.is_active:
login(request, user)
return HttpResponseRedirect('/user/')
else:
return HttpResponse("Your account is disabled.")
else:
return HttpResponse("Invalid login details supplied.")
else:
return render_to_response('user/login.html', {},context_instance = context)
这是重定向到 login.html 的另一个 View :
def index(request):
context_dict = {}
template = "user/login.html" #default template to render
user = None
user_profile = None
user = request.user.id
if user != None:
user_profile,created = UserProfile.objects.get_or_create(user=user)
#Check whether the user is new,if yes then he needs to select btw Mentor-Mentee
if user_profile and user_profile.is_new:
context_dict['selected'] = None
template = "user/select.html" #User has to select either Mentor/Mentee,so redirect to select.html
return render_to_response(template,context_dict,context_instance = RequestContext(request))
现在我使用了很少的 JavaScript 来解决这个问题,方法是手动从 cookie 设置 csrfmiddlewaretoken 的值,但这对 Django 来说有点奇怪。
PS:我使用的是 Django 1.7 并在所有浏览器上进行了测试。
最佳答案
尝试将此添加到您的表单中:
<div style="display:none">
<input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">
</div>
来源:https://docs.djangoproject.com/en/dev/ref/csrf/#other-template-engines
关于python - Django 抛出 "CSRF token missing or incorrect"错误(因为 csrfmiddlewaretoken 的空值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27722347/
我使用 Django 并且在 html 中我有 如何重命名csrfmiddlewaretoken?我不想让用户知道,该站点使用 Django。 我在 Django 中找不到任何东西 settings
我正在与 Django 合作创建一个网站,并遇到了一些关于 CSRF 的问题。我用 django.middleware.csrf.CsrfViewMiddleware并添加 {% csrf_token
我打算使用 django-piston 制作通用的 CRUD。我的示例代码之一如下 class TaskHandler(BaseHandler): allowed_methods = ('GET','
我在Django中使用django.contrib.comments,版本是1.6.1然后我有一个像这样的表格, {% get_comment_form for mbean as form %}
当我尝试用数据保存表单时出现此错误。形式: class EntityCreateForm(forms.ModelForm): def __init__(self, chain, *args, **kw
我正在尝试使用我的身份验证(用户名和密码)登录服务器,以便使用 swift 4 进行应用程序开发。但是我的服务器需要 csfrtoken 和 csrfmiddlewaretoken。如何提取 csrf
我最近遇到了一个很奇怪的问题。我的模板中有一个表单,如下所示: {% csrf_token %} SIGN IN 我收到了 CSRF token 丢失或不正
我是一名优秀的程序员,十分优秀!