【问题标题】:CSRF verification failed. Request aborted. {% csrf_token %} in django python3 htmlCSRF 验证失败。请求中止。 django python3 html中的{% csrf_token %}
【发布时间】:2017-10-20 01:36:57
【问题描述】:

我正在尝试登录 django/python。

我的views.py中有这个:

@csrf_exempt
def Principal(request):
    context = {}
    if request.method != 'GET':
        context = {
            'title': '405 Method Not Allowed',
        }


    if request.user.is_authenticated():
        logged_q = 'Logged in as '+ request.user.username
        logged = True
    else:
        logged_q = 'Not logged in.'
        logged = False

    print (logged_q)

    top_aparcamientos = Aparcamiento.objects.all()
    #top_aparcamientos = Comentario.objects.all().order_by('-aparcamiento__id').unique()[:5]
    pagina_list = Pagina.objects.all()       

    context['top_aparcamientos'] = top_aparcamientos
    context['pagina_list'] = pagina_list
    usuario = request.user.username
    context = {
      'usuario' : usuario,
      'logged' : logged
    }


    return render_to_response('index.html', context

所以,对于我的模板,我将变量记录在我的 base.html 中:

{% if logged %}
    <div class ="container_corner">
        <div class="topright">
            <span id="corner_message"><strong>Bienvenido,</strong>&nbsp<span class="oblicuo">{{usuario}}</span></span>
            <a href='logout/'><button id="logged"type="submit">Salir</button></a><br>
        </div>
    </div> {% else %}
    <form id="login_form" action="login/" method ="POST">
        {% csrf_token %}
        <label for="id_username"><span class="login_fields">Nick: </span></label> <input id="id_username" maxlength="254" name="username" type="text" />
        <label for="id_password"><span class="login_fields">Contraseña: </span></label> <input id="id_password" name="password" type="password" />
        <button type="submit">Login</button>
    </form> {% endif %}

但是当我尝试登录时它给了我这个错误:

Forbidden (403) CSRF verification failed. Request aborted. Help Reason given for failure: CSRF token missing or incorrect.

我还需要{% csrf_token %} 吗?在哪里?

谢谢!

【问题讨论】:

  • 处理登录表单提交的视图代码是什么? (即login/ url 的视图)您使用的是 Django 身份验证视图吗?
  • '{% extends 'base.html' %} {% block title %}Login{% endblock %} {% block content %}

    Login

    {% csrf_token %} {{ form.as_p }}
    {% endblock %}'
  • 那是模板代码,视图代码是什么?此外,您可以使用问题下方的小 edit 链接编辑您的问题。
  • 抱歉,views.py 代码是第一个!
  • 该视图是呈现表单的视图,它看起来不像该视图处理表单 POST。

标签: python html django


【解决方案1】:

你可以用 {% csrf_token %} 代替

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

或者你也可以使用 {{ csrf_input }}。

<form action="login/" method="post">{{ csrf_input }}

【讨论】:

    猜你喜欢
    • 2012-12-07
    • 2015-03-08
    • 1970-01-01
    • 1970-01-01
    • 2014-02-03
    • 2016-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多