接着咱们来作一下登录功能javascript
咱们首先在templates建立一个login.html,用来显示登录的页面html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script type="text/javascript" src="/static/js/jquery-3.3.1.js"></script> <script> $(function (){ $("input[name='username']").blur(function () { //alert("") uname=$("input [name='username']").val() CSRF=$("input[name='csrfmiddlewaretoken']").val() $.ajax({ url:'/BlogUser/getUser', data:{'uname':uname,'csrfmiddlewaretoken':CSRF}, type:'POST', }); }); }); </script> </head> <body> <h1>欢迎登陆</h1> <form action="/BlogUser/login" method="post"> {% csrf_token %} 用户名:<input type="text" name="username" value="{{ username }}"> <br> 密 码:<input type="password" name="pwd"> <label style="color: red">{{ error1 }}</label><br> <input type="submit" value="登陆"> </form> </body> </html>
接着在views.py中建立登陆的函数login()java
def login(request): if request.method=='GET': return render(request,'login.html') else: username=request.POST.get('username') pwd=request.POST.get('pwd') blogUserSet=BlogUser.objects.filter(username=username,password=pwd) if len(blogUserSet)==1: return redirect(reverse('user:welcome',args=[blogUserSet.first().id])) else: return render(request,'login.html',{'error1':'密码错误'})
在blog\urls.py中导入welcome,在BlogUser.vews.py中配置一下路径jquery
登陆成功将用户信息放入sessionajax
2.中间件(帮咱们启用session)shell
3.设置存储形式(储存在设置数据库中)数据库
session只能储存json也就是字典类型的数据
django session的设计原理:
a、若是用户是第一次请求(就看客户端ie是否保存了sessionId的cookie)
建立session model
生成一个key sessionId 随机的一个字符串(uuid使id永远也不会重复)
保存到你session_engine指定位置
保存到cookie中,在客户的浏览器中
b、若是第二次以上的请求,客户端ie都会自动提交cookie到django中,django中利用你配置 的SessionMiddleware中间件激活session利用cookie中的sessionID到session_engine指 定位置读取session model,并设置到request的session属性上
正是用为这样才能在view里面经过request.session使用session能力django
session自己就是一个dict字段json
session在存数据时数据必须支持序列化json)浏览器
咱们首先须要把app的session在数据库中建立一个表
使用shell命令 migrate sessions
一、再次启动manage.py二、输入 migrate sessions 命令
这时咱们会发现数据中建立了一个session的表用来储存session 的建立时间和到期时间(默认时间为两周)
接着咱们修改views.py中的代码让用户登陆成功以后把它保存在session中以便于之后任何函数均可以在session中获取到信息
登陆成功后,咱们关闭浏览器 ,再次打开浏览器,在地址栏输入http://127.0.0.1:8000/welcome会发现内容不变
cookie和session共同保存的,cookie是保存在浏览器里,session保存在数据库中
接下来咱们实现不登陆的话看不到welcome这个页面,若是不登陆,直接访问welcome页面时就会自动跳转到登陆页面,而且登陆成功以后能够实现退出功能(使session失效)而且退出后又回到登陆页面
咱们须要在views.py中添加退出函数
而且修改一下welcome.html,在里面作一个判断
同时在BlogUser\urls.py下配置一下路径
接着咱们运行程序来到登陆页面 登陆数据库已有的数据
咱们点击退出,又会回到登陆页面