session:
1:INSTALLED_APPS 中有'django.contrib.sessions'
2: MIDDLEWARE 要有中间键 'django.contrib.sessions.middleware.SessionMiddleware'
3: 设置存储形式 按 ctrl + alt + r 输入migrate session 创建django_session数据库
4: 引用 request.session
django session的设计原理
1 如果用户是第一次请求(就看客户端ie是否保存了session ID的cookie)
创建session model
生成一个key session 随机的一个字符串 uuid
保存到你session_engine指定的位置
保存到cookie中,在用户的浏览器中
如果第二次以上的请求,客户端ie都会制动提交cookie到django,django中利用你配置的
SessionMiddleware中间件激活session利用cookie中的sessionID到你session_engine指
定的位置读取session model
并设置到request的session属性上
正式因为这样你才能在你的view里面通过request.session中使用session能力
session本身就是一个dict字典
session再存数据必须支持序列化json
第一步:在pydlogsys/sittings.py 中有没有 INSTALLED_APPS 'django.contrib.sessions'
第二步:在pydlogsys/sittings.py MIDDLEWARE 要有中间键'django.contrib.sessions.middleware.SessionMiddleware'
第三步:设置存储形式 按 ctrl + alt + r 输入migrate session 创建django_session数据库
按回车键:
第四步:bloguser/views.py中修改登陆成功后的跳转路径
在bloguser/urls.py中修改 path('login',login),为 path('login',login,name='login'),
这样做要是登陆过,它会在数据库中的django_session表中留下记录,下次登陆就会显示你的信息
第五步:在templates/welcome.html中修改,在登陆成功后显示‘退出’,未登陆显示‘登陆’
在bloguse/views.py中创建logout函数,在登陆成功后显示‘退出’,点退出的时候返回 welcome
在未登录时,点登陆会跳转到登陆页面 login
第六步:为了让用户更好有更好的体验,如:创建两个链接,aaaaa和bbbbb 在用未登录时只能点开bbbb,登陆
后可以点开两个链接,未登录的时候点aaaaa链接会跳转到登陆页面 login
在templates创建两个html文件:在两个文件中写入不同的内容
在bloguser/views.py中添加a和b两个函数
在bloguser/urls,py中添加路径
在templates/welcome.html中添加两个链接
这样就可以测试结果了,运行后在浏览器中输入http://127.0.0.1:8000/user/login进入登陆页面
输入账号,密码 浏览器会跳转到http://127.0.0.1:8000/welcome页面
这时的aaaaa和bbbbb两个链接都可以进入,点退出链接来测试结果
这时只能进入bbbbb的链接,点aaaaa会跳转到登陆页面 login
这次再输入账号和密码登陆后,它会直接跳转到aaaaa链接的页面 http://127.0.0.1:8000/user/a