我在登录过程中遇到了麻烦
def zero_default_auth(request):
print 'default auth............'
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
message = ''
if user is not None:
if user.is_active:
login(request, user, )
print "login success"
message="success!!!"
else:
message = 'disable'
else:
message = 'error!'
return render(request, 'index_zero.html')
这是我的登录视图。
模板导航栏
<li><a href="{% url 'intershell:zero_index' %}">Link to the zero</a></li>
<li><a href="{% url 'intershell:zero_join' %}">JOIN page</a></li>
<li><a href="{% url 'intershell:ajax_test' %}">ajax page</a></li>
单击链接后,登录数据不再存在。 如何将请求会话数据传递到另一个页面?
答案 0 :(得分:0)
我不太了解Django的内幕,但当你这样做时:
login(request, user)
Django使用会话框架在会话中保存用户的ID。
如果您想知道用户是否在模板中进行了身份验证,请执行此操作 在你的html文件中执行此操作。
{% if user.is_authenticated %}
<!-- Show only to authenticated user -->
{% endif %}
只有在&#39; django.contrib.auth.context_processors.auth&#39;在您的settings.py文件中,否则用户变量将无法在模板中使用。在Django 1.8中声明上下文的方式已更改,因此请检查文档(https://docs.djangoproject.com/en/1.9/ref/settings/#template-context-processors)
如果要查看视图,请使用以下命令: 来源(https://docs.djangoproject.com/en/1.9/topics/auth/default/#authentication-in-web-requests)
if request.user.is_authenticated():
# logged user
else:
# not logged
您还可以使用装饰器检查视图: 来源(https://docs.djangoproject.com/en/1.9/topics/auth/default/#the-login-required-decorator)
from django.contrib.auth.decorators import login_required
@login_required(login_url='/accounts/login/')
def my_view(request):
...