"""
一、如何给python内置用户添加额外的字段,注意一定义在没有迁移数据之前定义,否则会报错
1.在models中先调用
from django.contrib.auth.models import AbstractUser
2.在models中先定义好,需要额外添加的模型类,它需要继承,AbstractUser,例:
class show_cc(AbstractUser):
telphone = models.CharField(max_length=11)
3.在settings中最后添加
格式:AUTH_USER_MODEL='app名.模型类名'
AUTH_USER_MODEL='user.show_cc'
4.在迁移好后,在数据库中,即可看到
自定义的user_show_cc,而不是auth_show_cc
5.即可正常使用内置用户认证的功能 二.函数加装饰器用于用户认证
1.函数模块,请先加载
from django.contrib.auth.decorators import login_required
2.然后,再函数模块头顶加上装饰器
@login_required
3.举例:
@login_required
def get(self,request):
return render(request,'adminSystem/index.html') 三、类加装饰器用于用户认证
1.类模块,请先加载,两项
from django.utils.decorators import method_decorator
from django.contrib.auth.decorators import login_required
2.然后,再类模块里的函数头顶加上装饰器
class kkcckk(View):
@method_decorator(login_required)
def get(self,request):
return render(request,'adminSystem/index.html') *****method_decorator 用法的举例说明:*******
类视图使用装饰器
为类视图添加装饰器,可以使用两种方法。 为了理解方便,我们先来定义一个为函数视图准备的装饰器(在设计装饰器时基本都以函数视图作为考虑的被装饰对象),及一个要被装饰的类视图。 def my_decorator(func):
def wrapper(request, *args, **kwargs):
print('自定义装饰器被调用了')
print('请求路径%s' % request.path)
return func(request, *args, **kwargs)
return wrapper class DemoView(View):
def get(self, request):
print('get方法')
return HttpResponse('ok') def post(self, request):
print('post方法')
return HttpResponse('ok')
4.1 在URL配置中装饰
urlpatterns = [
url(r'^demo/$', my_decorate(DemoView.as_view()))
]
此种方式最简单,但因装饰行为被放置到了url配置中,单看视图的时候无法知道此视图还被添加了装饰器,不利于代码的完整性,不建议使用。 此种方式会为类视图中的所有请求方法都加上装饰器行为(因为是在视图入口处,分发请求方式前)。 4.2 在类视图中装饰
在类视图中使用为函数视图准备的装饰器时,不能直接添加装饰器,需要使用method_decorator将其转换为适用于类视图方法的装饰器。 method_decorator装饰器使用name参数指明被装饰的方法 # 为全部请求方法添加装饰器
@method_decorator(my_decorator, name='dispatch')
class DemoView(View):
def get(self, request):
print('get方法')
return HttpResponse('ok') def post(self, request):
print('post方法')
return HttpResponse('ok') # 为特定请求方法添加装饰器
@method_decorator(my_decorator, name='get')
class DemoView(View):
def get(self, request):
print('get方法')
return HttpResponse('ok') def post(self, request):
print('post方法')
return HttpResponse('ok')
如果需要为类视图的多个方法添加装饰器,但又不是所有的方法(为所有方法添加装饰器参考上面例子),可以直接在需要添加装饰器的方法上使用method_decorator,如下所示 from django.utils.decorators import method_decorator # 为特定请求方法添加装饰器
class DemoView(View): @method_decorator(my_decorator) # 为get方法添加了装饰器
def get(self, request):
print('get方法')
return HttpResponse('ok') @method_decorator(my_decorator) # 为post方法添加了装饰器
def post(self, request):
print('post方法')
return HttpResponse('ok') def put(self, request): # 没有为put方法添加装饰器
print('put方法')
return HttpResponse('ok') """

django 内置用户-装饰器的更多相关文章

  1. Python 4 函数的参数,内置函数,装饰器,生成器,迭代器,

    一.函数的参数: 1.位置参数:调用函数时根据函数定义的参数位置来传递参数. 2.关键字参数:用于函数调用,通过“键-值”形式加以指定.可以让函数更加清晰.容易使用,同时也清除了参数的顺序需求. 3. ...

  2. Python—内置三大装饰器(@staticmethod、@classmethod、@property)

    https://blog.csdn.net/weixin_42681866/article/details/83376484 https://blog.csdn.net/weixin_43265804 ...

  3. Django内置Admin解析

    Django 内置的admin是对于model中对应的数据表进行增删改查提供的组建 一.Django admin的内部依赖: 依赖的app django.contrib.auth django.con ...

  4. Django内置信号

    阅读目录(Content) Django中内置的signal 自定义信号 1.定义信号 2.注册信号 3.触发信号 回到顶部(go to top) Django中内置的signal Django中提供 ...

  5. django 内置“信号”机制和自定义方法

    一.引子 在操作数据的时候,假设我们需要记录一些日志,这个时候,我们需要用什么来显示这个需求呢?装饰器?装饰器只能先实现整体的操作.在django 里面有这么一个东西--信号 下面我们就来了解了解它. ...

  6. Django学习——ajax发送其他请求、上传文件(ajax和form两种方式)、ajax上传json格式、 Django内置序列化(了解)、分页器的使用

    1 ajax发送其他请求 1 写在form表单 submit和button会触发提交 <form action=""> </form> 注释 2 使用inp ...

  7. Django内置Admin

    Django内置的Admin是对于model中对应的数据表进行增删改查提供的组件,使用方式有: 依赖APP: django.contrib.auth django.contrib.contenttyp ...

  8. Django内置分页

    一.django内置分页 from django.shortcuts import render from django.core.paginator import Paginator, EmptyP ...

  9. Django内置权限扩展案例

    当Django的内置权限无法满足需求的时候就自己扩展吧~ 背景介绍 overmind项目使用了Django内置的权限系统,Django内置权限系统基于model层做控制,新的model创建后会默认新建 ...

随机推荐

  1. xml的约束

    一.DTD约束xml 1.约束介绍 由于xml的标签由用户自己定义,因此在开发的时候,每个人都可以根据自己的需求来定义xml标签,这样导致项目中的xml难以维护,因此需要使用一定的规范机制来约束xml ...

  2. Linux md5sum校验文件完整性

    使用场景:  远程备份大文件,防止网络异常断开,文件备份不完整,使用md5校验其完整性. 1. 获取文件md5值 [root@kvm-123 gitlab]# md5sum 1564248991_20 ...

  3. 离线安装VS Code Server

    1. 获取commit 从https://github.com/microsoft/vscode/tags 获取最新的commit 2. 清理目录 mkdir -p ~/.vscode-server/ ...

  4. 如何在github上传本地项目代码

    首先你要在github上申请一个账号 网址:https://github.com/ 然后你要下载一个git工具 网址:https://gitforwindows.org/ 进入官网直接下载就行,下载完 ...

  5. vue2.0中模拟数据的配置

    在开发过程中,有时候接口跟不上我们的进度,我们要测试,就需要自测. 现在vue已经升级到2.0版本了,早期在vue构建工程文件在build里面有dev-server.js,但是后来构建去除了该文件集成 ...

  6. centos7 添加磁盘到/(根目录下),扩展VG卷和lv

    转载自:http://blog.itpub.net/25469263/viewspace-2662215/ centos7中使用vg方式扩充root分区 1.创建pv fdisk /dev/sdb 输 ...

  7. mzy git学习,分支以及分支合并(四)

    git 鼓励大量使用分支:最后进行master和分支之间的合并 git branch git branch 查看当前有多少分支,并且将当前在使用的分支用*标注出来. [一定要注意git的分支有从属概念 ...

  8. TCP请求连接与断开

    TCP连接的三次握手:

  9. kubebuilder实战之六:构建部署运行

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  10. 3k+2形式的素数相关的两个命题的证明