在写登陆注册时,一般有两种方法,一种是直接使用Django的auth模块,另外一种就是自己模拟实现session和session id,前者的弊端就是字段固定,需要扩展时需要进行重写,后者就是自己造轮子,费时费力,设计的可能并没有Django那么好,但是可以精确控制字段,扩展度高,就来说说auth模块吧.
User
User是auth模块中维护用户信息的关系模式,在数据库中被命名为auth_user,使用migrate会自动生成.
创建User表的SQL语句:
1 | CREATE TABLE "auth_user" ( |
在导入该时需要这样写,需要区别时是自带的还是自己写的
1 | from django.contrib.auth.models import User |
创建用户
1 | user = User.objects.create_user(username, password) |
这里就是和普通ORM操作有所区别,通常使用了create之后就不需要.save就可以保存,这里需要执行.save来进行保存,auth模块会自动加密我们的密码.如果不用自带的User,需要加密解密时时就要用到
1 | # 加密 |
认证用户
1 | from django.contrib.auth import authenticate |
认证成功返回True,认证失败返回Flase,一般在登陆时使用.
修改用户密码
1 | user.set_password(new_password) |
这样可以配合中间件验证是否登陆,登陆的话可以进行修改密码.
登陆
1 | # 导入模块 |
使用login登陆成功之后,会设置session中的值,对用户进行跟踪,这里需要注意的是,没有使用login模块来进行登陆的话就需要使用
1 | request.session['xxx'] = xxx |
注销
1 | from django.contrib.auth import logout |
如果不适用logout来尽心注销,就需要使用
1 | del request.sessionp['xxx] |
来删除session
这只是Django中模块的冰山一角,其中还有很多它帮我们造好的轮子,比如权限判断,限制登陆才能访问等.