认证模块: from django.contrib import auth
auth.authenticate:用内置模块校验登录信息.
供了用户认证功能,即验证用户名以及密码是否正确,一般需要username 、password两个关键字参数。如果认证成功(用户名和密码正确有效),便会返回一个 User 对象。
authenticate()会在该 User 对象上设置一个属性来标识后端已经认证了该用户,且该信息在后续的登录过程中是需要的。
auth.login(request, user):将校验的用户信息封装到request.user,可以通过(request.user.username)取到值
auth.logout(request):当前请求的session信息会全部清除。该用户即使没有登录,使用该函数也不会报错。
login_required: auth 模块提供的一个装饰器工具,用来快捷的给某个视图添加登录校验。from django.contrib.auth.decorators import login_required
若用户没有登录,则会跳转到django默认的 登录URL '/accounts/login/ ' 并传递当前访问url的绝对路径 (登陆成功后,会重定向到该路径)。
如果需要自定义登录的URL,则需要在settings.py文件中通过LOGIN_URL进行修改。
create_user:创建用户
check_password:auth 提供的一个检查密码是否正确的方法,需要提供当前请求用户的密码。密码正确返回True,否则返回False。
set_password:auth 提供的一个修改密码的方法,接收 要设置的新密码 作为参数。
扩展默认的auth_user表
一:我们可以通过继承内置的 AbstractUser 类,来定义一个自己的Model类。
from django.contrib.auth.models import AbstractUser
from django.contrib.auth.models import AbstractUserclass UserInfo(AbstractUser): """ 用户信息表 """ nid = models.AutoField(primary_key=True) phone = models.CharField(max_length=11, null=True, unique=True) def __str__(self): return self.username
按上面的方式扩展了内置的auth_user表之后,一定要在settings.py中告诉Django,我现在使用我新定义的UserInfo表来做用户认证。写法如下:
# 引用Django自带的User表,继承使用时需要设置AUTH_USER_MODEL = "app名.UserInfo"
二:建立一张一对一的关联表
from django.contrib.auth.models import Userclass Userdate(model.Model) phone = models.CharField(max_length=11) use = modelsOnetToOneField(to=User)