Django基础之auth模块

内容概要

  • 用户认证模块auth

  • auth模块补充

  • auth_user表扩展字段

内容详细

auth模块

主要是用来做用户相关的功能

注册 登录 验证 修改密码 注销<br/>


访问admin需要管理员账号

该账号数据均来源于数据库迁移之后生成的auth_user表

如何创建admin管理员账号

createsuperuser</pre>



 

具体操作

from django.contrib import auth

校验用户名密码是否正确

auth.authenticate(request,username=username,password=password)

保存用户状态

auth.login(request,user_obj)

查看用户是否登录

request.user.is_authenticated()

获取用户对象

request.user

校验原密码是否正确

request.user.check_password()

修改密码

request.user.set_password()
request.user.save()

校验是否登录装饰器

from django.contrib.auth.decorators import login_required
“”“
跳转全局配置

LOGIN_URL = &#39;/lg/&#39;<br/>

跳转局部配置

@login_required(login_url=&#39;/lg/&#39;)<br/>

”“”

auth模块补充

1.用户注册
from django.contrib.auth.models import AbstractUser,User

# 操作auth_user写入数据不能使用create方法 密码不会自动加密<br/>
    # User.objects.create(username=username,password=password,email=email)<br/>
    # 创建普通用户<br/>
    User.objects.create_user(username=username,password=password,email=email)<br/>
    # 创建超级用户<br/>
    User.objects.create_superuser(username=username, password=password, email=email)<br/>

2.用户注销

auth.logout(request)</pre>

auth模块用户表扩展字段

在auth_user表的基础之上还想增加额外的字段 并且还可以使用auth模块所有的功能

配合文件配置

告诉django使用我们自己定义的表来取代auth_user表

AUTH_USER_MODEL = ‘app01.Userinfo’ # 应用名.表名

一对一表关联(了解)

面向对象继承(掌握)

from django.contrib.auth.models import AbstractUser
class Userinfo(AbstractUser):

# 扩展AbstractUser表中没有的字段<br/>
phone = models.BigIntegerField()<br/>
info = models.CharField(max_length=255)</pre>

小结

1:校验用户名与密码
auth.authenticate(username=username, …)
2:保存用户信息

  auth.login(request, user_obj)

3:判断用户是否登录

  request.user.is_authenticated()

4:装饰器

  form django.contrib.auth.decorators import login_required<br/>
  局部:@login_required(login_url=&#39;/login/&#39;) (灵活)<br/>
  全局:配置---&gt;LOGIN_URL = &#39;/login/&#39; (省事)

5:验证原密码(修改密码)

  request.user.check_password(原密码)

6:修改密码(两步)

  request.user.set_password(新密码)<br/>
  request.user.save()

7:创建用户
  命令行创建:createsupperuser(超级用户)(管理一般不会使用逻辑代码创建)

   from django.contrib.auth.models import User<br/>

  User.objexts.create()(创建的用户密码是明文)(不推荐)

   User.objexts.create_user()(普通用户)</pre>