版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chengqiuming/article/details/84844342
一 注销URL
# -*- coding: utf-8 -*-
from django.conf.urls import url
# 导入views中login
from django.contrib.auth.views import login
from . import views
'''
1 第一个url解析
登录页面的 URL 模式与 URL http://localhost:8000/users/login/ 匹配。
这个 URL 中的单词 users 让 Django 在 users/urls.py 中查找,而单词login 让它将请求发送给 Django 默认视图 login
(注意,视图实参为 login ,而不是 views.login )。
鉴于我们没有编写自己的视图函数,我们传递了一个字典,告诉 Django去哪里查找我们将编写的模板。
这个模板包含在应用程序 users 而不是 learning_logs 中。
2 第二个url解析
注销 URL 模式,该模式与 URL http://locallwst:8000/users/logout/ 匹配。
URL 模式将请求发送给函数 logout_view() 。
这样给这个函数命名,旨在将其与我们将在其中调用的函数 logout() 区分开来
'''
urlpatterns = [
# 登录页面.
url(r'^login/$', login, {'template_name': 'users/login.html'},
name='login'),
# 注销.
url(r'^logout/$', views.logout_view, name='logout'),
# Registration page.
url(r'^register/$', views.register, name='register'),
]
二 视图函数 logout_view
from django.shortcuts import render
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
# 从 django.contrib.auth 中导入了函数 logout()
from django.contrib.auth import login, logout, authenticate
from django.contrib.auth.forms import UserCreationForm
def logout_view(request):
""" 注销用户 """
# 调用了函数 logout() ,它要求将 request 对象作为实参。
logout(request)
# 我们重定向到主页
return HttpResponseRedirect(reverse('learning_logs:index'))
三 链接到注销视图
三 链接到注销视图
<p>
<a href="{% url 'learning_logs:index' %}">学习笔记</a> -
<a href="{% url 'learning_logs:topics' %}">主题</a> -
<!--在 Django 身份验证系统中,每个模板都可使用变量 user ,
这个变量有一个 is_authenticated 属性:如果用户已登录,
该属性将为 True ,否则为 False 。-->
{% if user.is_authenticated %}
<!--对于已通过身份验证的用户,还设置了属性 username ,
我们使用这个属性来个性化问候语,让用户知道他已登录-->
你好, {{ user.username }}.
<!-- 使得仅当用户登录后才能看到它-->
<a href="{% url 'users:logout' %}">退出</a>
{% else %}
<!--对于还未通过身份验证的用户,我们再显示一个到登录页面的链接-->
<a href="{% url 'users:register' %}">注册</a> -
<a href="{% url 'users:login' %}">登录</a>
{% endif %}
</p>
四 测试