Django - 403 Forbidden - CSRF 令牌丢失或不正确
Posted
技术标签:
【中文标题】Django - 403 Forbidden - CSRF 令牌丢失或不正确【英文标题】:Django - 403 Forbidden - CSRF token missing or incorrect 【发布时间】:2013-12-03 13:10:18 【问题描述】:当我按下“注销”按钮时,我已更新到 Django 1.6 并遇到 CSRF 令牌问题。
我的代码: --views.py
@login_required(login_url='/login/')
def show_matches(request):
errors = []
logged = True
if request.method == "POST":
if 'edit' in request.POST:
return HttpResponseRedirect("/edit_matches/")
elif 'view' in request.POST:
return HttpResponseRedirect("/view_matches/")
elif 'logout' in request.POST:
return HttpResponseRedirect("/logout/")
else:
errors.append('Incorrect operation!')
return render_to_response('admin/match_main.html', RequestContext(request, locals()))
-- match_show.html
% extends "admin/base_admin.html" %
% block title %Administration referee page % endblock %
% block content %
<form action='.' method='post'>% csrf_token %
<input class="btn btn-medium btn-primary" type="submit" value="Edit Matches" name="edit" />
<input class="btn btn-medium btn-primary" type="submit" value="View Matches" name="view" />
</form>
% endblock %
如何解决这个问题?
【问题讨论】:
【参考方案1】:添加隐藏输入
<input type='hidden' name='csrfmiddlewaretoken' value='csrf_token'>
【讨论】:
% csrf_token %
将为您完成这一整行。【参考方案2】:
您显示的模板不包括注销按钮。如果您想通过发布请求注销,则必须在包含注销按钮的表单中包含一个 csrf 令牌。
【讨论】:
以上是关于Django - 403 Forbidden - CSRF 令牌丢失或不正确的主要内容,如果未能解决你的问题,请参考以下文章
在 django 项目中删除文件时出现 403 FORBIDDEN
Django REST Framework 删除方法请求收到 Forbidden 403
无法找到 403 Forbidden 错误的原因:Nginx Daphne Django