用户登录

用户登录

本节利用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

 

posted @ 2019-02-18 19:48  effortsing  阅读(436)  评论(0编辑  收藏  举报