用户登录
本节利用Session实现一个用户登录的实例,这也是典型的Session实例,实现的基本原理是当登录成功后,会将用户名以及其他相关信息写入session。如果用户再用同一个
浏览器访问web应用,就会从与客户端对应的session中重新获取用户名和其他相关信息,这也表明用户处于登录状态,所以当用户第二次访问该web应用时,除非session过期
否则无须登录
本例使用login路由模拟用户登录,为了方便,使用HTTP GET请求指定用户名(user)字段,并使用logout注销登录(删除session中的用户名)
1、首先建立工程,建立工程请参照:https://www.cnblogs.com/effortsing/p/10394511.html
2、在工程的Firstdjango目录中建立一个user.py脚本文件,然后在user.py文件中添加如下内容:
from django.http import HttpResponse
def index(request):
# 从Session获取用户名
user=request.session.get('user')
result=''
# 如果成功获取用户名,表明用户名处于登录状态
if user:
result='user: %s' % user
else:
result='Not logged in'
return HttpResponse(result)
#用于登录的路由
def login(request):
# 从HTTP GET 请求中得到用户名
user=request.GET.get('user')
result=''
if user:
# 如果成功获得用户名,就将用户名保存到session中
request.session['user']=user
result='login success'
else:
result='login failed'
return HttpResponse(result)
#用户注销登录的路由
def logout(request):
try:
#删除session中的用户名
del request.session['user']
except KeyError:
pass
return HttpResponse("you are logged out")
3、然后在Firstdjango目录中找到urls.py脚本文件,用下面的代码代替urls.py脚本里面的内容:
from django.conf.urls import url
from .import user
urlpatterns=[
#下面代码是本例添加的路由方法与正则表达式的映射
url(r'^$',user.index),
url(r'^login$',user.login),
url(r'^logout$',user.logout),
]
4、配置migrate
进入项目manage所在的目录中执行如下命令,否则会报错:no such table: django_session
进入cmd
输入盘符比如:E:
切换目录
cd E:\progect\Firstdjango
python manage.py migrate
5、启动django
6、浏览器访问
http://127.0.0.1:8000/login?user=Bill
login success
http://127.0.0.1:8000
user: Bill
过20秒后(session失效),或者访问http://127.0.0.1:8000/logout 注销用户登录状态,再次访问http://127.0.0.1:8000,就会出现如下信息:
http://127.0.0.1:8000/logout
you are logged out
http://127.0.0.1:8000/
Not logged in