【问题标题】:Django - 403 Forbidden - CSRF token missing or incorrectDjango - 403 Forbidden - CSRF 令牌丢失或不正确
【发布时间】: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 %}

如何解决这个问题?

【问题讨论】:

    标签: python django python-2.7 django-views


    【解决方案1】:

    添加隐藏输入

    <input type='hidden' name='csrfmiddlewaretoken' value='{{csrf_token}}'>
    

    【讨论】:

    • {% csrf_token %} 将为您完成这一整行。
    【解决方案2】:

    您显示的模板不包括注销按钮。如果您想通过发布请求注销,则必须在包含注销按钮的表单中包含一个 csrf 令牌。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-15
      • 2015-10-15
      • 2017-09-10
      • 2021-07-14
      • 2019-12-22
      • 2018-11-05
      • 2021-11-13
      • 2012-04-20
      相关资源
      最近更新 更多