ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

csrf相关装饰器+中间件思想编程+auth认证模块

2022-05-26 01:02:11  阅读:176  来源: 互联网

标签:csrf 中间件 auth 导入 module 模块 import


目录

csrf相关装饰器

导入模块

from django.views.decorators.csrf import csrf_exempt,csrf_protect

csrf_exempt :忽略csrf校验
csrf_protect: 开启csrf校验

针对FBV

@csrf_protect\@csrf_exempt
def login(request):
    return render(request,'login.html')

针对CBV

csrf_protect 三种CBV添加装饰器的方式都可以
csrf_exempt  只有一种方式可以生效(给重写的dispatch方法装)

模块导入

常规导入方式

from ccc import b
print(b)  # <module 'ccc.b' from '/Users/jiboyuan/PycharmProjects/day61_1/ccc/b.py'>

字符串导入方式

常出现在源码中

import importlib
module_path = 'ccc.b' # 最小导入单位是模块文件级别
res = importlib.import_module(module_path)
print(res) # <module 'ccc.b' from '/Users/jiboyuan/PycharmProjects/day61_1/ccc/b.py'>

基于中间件思想编写项目

'''以发送提示信息为需求 编写功能'''
方式1:封装成函数
方式2:封装成配置
import settings
import importlib
def send_all(msg):
    # 1.循环获取配置文件中字符串信息
    for str_path in settings.NOTIFY_FUNC_LIST:  # 'notify.email.Email'
        # 2.切割路径信息
        module_path, class_str_name = str_path.rsplit('.', maxsplit=1)  # ['notify.email','Email']
        # 3.根据module_path导入模块文件
        module = importlib.import_module(module_path)
        # 4.利用反射获取模块文件中对应的类名
        class_name = getattr(module, class_str_name)  # Email  Msg  QQ
        # 5.实例化
        obj = class_name()
        # 6.调用发送消息的功能
        obj.send(msg)

auth认证模块

django提供的快速完成用户相关功能的模块,用户相关功能:创建、认证、编辑...

django也配套提供了一张'用户表',执行数据库迁移命令之后默认产生的auth_user

django自带的admin后台管理用户登录参考的就是auth_user表,创建admin后台管理员用户

run manage.py task>>: createsuperuser 

自动对用户密码进行加密处理并保存

导入模块

from django.contrib import auth

方法大全

1.验证用户名和密码是否正确
	auth.authenticate()
    
2.保存用户登录状态
	auth.login()
    
3.获取当前用户对象
	request.user
    
4.判断当前用户是否登录
	request.user.is_authenticated()
    
5.校验登录装饰器
	from django.contrib.auth.decorators import login_required
	@login_required(login_url='/lg/')  # 局部配置
	@login_required  # 全局配置
	LOGIN_URL = '/lg/'  # 需要在配置文件中添加配置
    
6.修改密码
	request.user.check_password() 
	request.user.set_password()
	request.user.save()

7.注销登录
	auth.logout(request)
    
8.注册用户
from django.contrib.auth.models import User
	User.objects.create_superuser()
	User.objects.create_suser()

扩展表字段

方式1:编写一对一表关系(了解)

方式2:类继承(推荐)
from django.contrib.auth.models import AbstractUser
class Users(AbstractUser):
    # 编写AbstractUser类中没有的字段 不能冲突!!!
    phone = models.BigIntegerField()
    addr = models.CharField(max_length=32)

# settings.py
AUTH_USER_MODEL = 'app01.Users'
"""
1.类继承之后 需要重新执行数据库迁移命令 并且库里面是第一次操作才可以
2.auth模块所有的方法都可以直接在自定义模型类上面使用
	自动切换参照表
"""

标签:csrf,中间件,auth,导入,module,模块,import
来源: https://www.cnblogs.com/RainKz/p/16311589.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有