12月12日学习内容整理:F和Q查询,session和cookie回顾,auth模块和user对象(用户登录认证系统)

一、F查询和Q查询

引入:from django.db.models import  F,Q

1、F查询

F(字段名)    就表示该字段值

应用在不同的字段之间进行比较或者修改字段等

注意:F函数不能对字符串进行操作

2、Q查询

Q(字段名=字段值)  括号里写的是条件

应用在表示更为复杂的查找条件关系

&代表与    |代表或  ~代表非   也可以加括号表示优先级

 

二、session和cookie

对于session来说,

我们在后端设置键值对,那django做了两件事:

(1) set_cookie("sessionID","2134shdc329cbk398asdbk2")     给客户端写cookie,就是一个随机字符串

(2) 数据库的django_session表中插入一条记录:   也就是在服务端保存的session数据,保存在django_session表中

我们接受请求取session的键值对时,django也做了两件事:

uuid=request.COOKIE.get("sessionID")      就是从客户端发过来的请求中取出cookie携带的随机字符串

django的session表中做过滤:     利用这个随机字符串去session表中进行过滤查找出相应的字段值

 

 

三、Django的登录验证之auth模块

引入:from  django.contrib  import  auth

1、auth模块对应的是auth_user这张表,不用我们自己创建,在Django数据库迁移的时候自动创建,password字段是加密的

2、主要应用:auth模块为我们提供API来对session进行验证和设置,不用我们自己去设置session字段和验证session数据

3、方法

(1)验证方法:

user=auth.authenticate(username=user,password=pwd)    自动去auth_user这张表中去查询是否有这条记录,并把密码加密

有就返回对应的model对象,没有就返回None

django会给当前这个model对象,也就是user对象加上一个属性标识来证明这个对象登陆过

(2)设置session

auth.login(request,user)   参数是请求对象request,当前的记录对象     就相当于request.session["user"]=user.username,django会自动在django_session表中构建session数据

(3)删除session

auth.logout(request)         相当于我们自己写request.session.flush()

没有返回值

 

四、Django的登录验证之user对象

我们所写的一些项目基本都是要在用户登录之后才能进行别的操作,那我们之前都是用session来判断它的登录状态,django为我们提供了user对象及一些方法帮我们做这件事

1、request.user        请求对象的user属性就可以表示当前用户登录的用户对象,也就是user对象,若没有登录就返回一个匿名用户对象anonymonsuser(字段值一般为空或字符串等)   所以我们不能依据这个属性有没有返回值来判断是否已登录

这是auth模块为我们提供的方法,如果不引入auth模块,没有经过auth.login()方法写入session,这个方法没有意义

2、方法

(1)判断是否已登录

user.is_authenticated():返回布尔值,该用户登录则为True,否则为False

(2)注册

from  django.contrib.auth.models  import User    这个User就是auth_user这张表,我们所说的user对象其实就是表中的一条记录

user=User.objects.create_user(username=user,password=pwd)     这就创建出了一个user对象,可以用auth模块的验证方法进行验证

user=User.objects.create_superuser(username=user,password=pwd)    创建一个超级用户

(2)修改密码

user=User.objects.get(username='')  要先得到这个被修改的user对象

user.set_password(new_pwd)
user.save()

 

posted @ 2017-12-12 16:12  九二零  阅读(116)  评论(0编辑  收藏  举报