csrf跨站请求相关的装饰器

# 在Django中有一个中间件对csrf跨站请求做了验证,我只需要把这个中间件打开,那么就意味着所有的方法都要被验证
若在所有的视图函数中,只需要几个验证,另外的则不验证,怎么办?

csrf_protect:哪个视图函数加了这个装饰器,这个函数就会被验证
csrf_exempt:哪个视图函数加了这个装饰器,这个函数就不会被验证

@csrf_exempt
def index(request):
    return render(request, 'index.html')

@csrf_protect
def func(request):
    return render(request, 'func.html')

# @method_decorator(csrf_exempt,name='post') # 第二种方式也不行
# @method_decorator(csrf_protect,name='post') # 第二种方式也行
class Login(View):
    # @method_decorator(csrf_exempt)  # 第三张方式可以
    @method_decorator(csrf_protect)  # 第三张方式可以
    def dispatch(self, request, *args, **kwargs):
        return super().dispatch(request, *args, **kwargs)
    # 不让post方法做验证
    # @method_decorator(csrf_exempt)  # 第一种方式不行
    # @method_decorator(csrf_protect)  # 第一种方式行
    def post(self, request):
        print("post")
        return HttpResponse("post")
"""
	CBV针对于csrf_exempt:只有第三种方式(dispatch)才生效,其余两种都不可以
	CBV正碎玉csrf_protect:三种方式哪一种都可以
"""

Auth模块的介绍

Auth模块是什么?Auth模块是Django自带的用户认证模块
Django作为一个完美主义者的终极框架,当然也会想到用户的这些痛点。它内置了强大的用户认证系统–auth,它默认使用 auth_user 表来存储用户数据。

# 在执行数据库迁移命令的时候,会自动生成一个默认的表,其中有auth_开头的很多表
# auth_user表的作用:djagno自带的后台管理系统所依赖的数据就在这张表中
# 默认情况下,auth_user表是空表,没有用户名和密码,因此我们需要自己创建用户数据
# 需要创建一个超级管理员账号才能登录
python38 manage.py createsuperuser # 生成超级用户命令

Auth模块的使用

# 导入Auth模块
	from django.contrib import auth
    
authenticate():
    提供了用户认证功能,即验证用户名和密码是否一致,如果认证成功返回一个user对象,否则返回None
    
posted on 2024-01-02 11:44  Way*yy  阅读(4)  评论(0编辑  收藏  举报