auth模块和importlib模块

auth模块

该模块主要是用来做用户相关的功能,例如:注册、登录、验证、修改密码、注销

访问admin需要管理员账号,该账号数据均来源于数据库迁移之后生成的auth_user表

创建admin管理员账号:createsuperuser

具体操作

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.is_superuser

# 校验原密码是否正确
request.user.check_password()

# 修改密码
request.user.set_password()
request.user.save()

# 校验是否登录装饰器
from django.contrib.auth.decorators import login_required
"""
跳转全局配置
	LOGIN_URL = '/lg/'   # 配置文件中写上
	@login_required
跳转局部配置
	@login_required(login_url='/lg/')
"""
# 用户注册
    from django.contrib.auth.models import User
    # 在操作auth_user写入数据不能使用create方法,该方法并不会加密密码
    # 创建普通用户
     User.objects.create_user(username=username,password=password,email=email)
	# 创建超级用户(一般创建超级用户并不在代码中创建)
    User.objects.create_superuser(username=username, password=password, email=email)
    
# 用户注销
	auth.logout(request)

auth模块用户表扩展字段

在auth_user表的基础上还想增加额外字段,并且还可以使用auth模块所有的功能
# 配合文件配置,告诉Django使用我们自己定义的表来取代auth_user表
AUTH_USER_MODEL = 'app01.Userinfo'  # 应用名.表名

# 一对一表关联,面向对象继承
form django.contrib.auth.models import AbstractUser
class Userinfo(AbstractUser):
    # 自己扩展原表内没有的字段
    phone = models.BigIntegerField()
    info = models.CharField(max_length=255)

importlib模块

用字符串的形式导入模块(Django的中间件使用的)
from b import c
print(c)  # <module 'b.c' from 'D:\\day54_1\\b\\c.py'>

import importlib
res = 'b.c'
ret = importlib.ipmort_module(res)
print(ret)  # <module 'b.c' from 'D:\\day54_1\\b\\c.py'>

posted @ 2021-06-30 20:45  zheng-sn  阅读(52)  评论(0)    收藏  举报