【发布时间】: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> <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
{% endblock %}' -
那是模板代码,视图代码是什么?此外,您可以使用问题下方的小
edit链接编辑您的问题。 -
抱歉,views.py 代码是第一个!
-
该视图是呈现表单的视图,它看起来不像该视图处理表单 POST。