Django - 将参数传递给 CBV 装饰器的正确方法?

2024-04-14

文档功能应用装饰器的不错选择,例如login_required基于类的视图 https://docs.djangoproject.com/en/dev/topics/class-based-views/intro/#decorating-the-class.

但是,我有点不清楚如何与装饰器一起传递特定参数,在这种情况下我想改变login_url装饰器的 https://docs.djangoproject.com/en/1.8/topics/auth/default/#django.contrib.auth.decorators.login_required.

类似以下内容,仅有效:

@login_required(login_url="Accounts:account_login")
@user_passes_test(profile_check)
class AccountSelectView(TemplateView):
    template_name='select_account_type.html'

你应该使用@method_decorator 与类方法 https://docs.djangoproject.com/en/1.9/topics/class-based-views/intro/#decorating-the-class:

类上的方法与独立函数不太一样,所以 你不能只将函数装饰器应用于方法 - 你需要 首先将其转换为方法装饰器。方法装饰器 装饰器将函数装饰器转换为方法装饰器,因此 它可以用在实例方法上。

然后只需使用所需的参数调用装饰器并将其传递给方法装饰器(通过调用可以接受参数的装饰器函数,您将在退出时获得实际的装饰器)。不要忘记将要修饰的方法的名称作为关键字参数传递name (dispatch例如)如果您要装饰类而不是类方法本身:

@method_decorator(login_required(login_url="Accounts:account_login"),
                  name='dispatch')
@method_decorator(user_passes_test(profile_check), name='dispatch')
class AccountSelectView(TemplateView):
    template_name='select_account_type.html'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django - 将参数传递给 CBV 装饰器的正确方法? 的相关文章

随机推荐

  • 将对象传递给 AutoMapper 映射

    我正在使用 AutoMapper 被映射到的实体的一些值是我当前方法中的变量 我尝试用谷歌搜索但没有成功 我可以将一组键值对或一个对象或其他东西传递给我的映射以使其使用这些值吗 映射后修改示例 comment variable is a C
  • 如何使用 Node.JS 通过 XMPP 发送 HTML 格式的消息?

    这个问题讨论使用node xmpp发送消息 在 Node js 上通过 XMPP 连接到 Google Talk https stackoverflow com questions 4349577 connecting to google
  • python - 池映射的字典迭代器

    我正在处理一组冻结集 我试图在字典 输出 中找到每个冻结集的最小集 我有 70k freezesets 所以我正在制作这个 freezeset 字典的块并并行化这个任务 当我尝试将此字典作为我的函数的输入传递时 仅发送密钥 因此我收到错误
  • 按组列出的最常见值(众数)[重复]

    这个问题在这里已经有答案了 我试图按组找到最常见的值 在以下示例数据框中 df lt data frame a c 1 1 1 1 2 2 2 3 3 b c 2 2 1 2 3 3 1 1 2 gt df a b 1 1 2 2 1 2
  • 标签助手“input”在元素的属性声明区域中不得包含 C#

    在构建最近从 NET Core 2 2 迁移到 3 0 的 ASP NET Core MVC 应用程序时 我们遇到以下错误 标签助手 input 或 textarea 或任何其他 不得具有 C 在元素的属性声明区域中 我们用的是剃须刀 fu
  • android EditText maxLength 允许用户输入更多内容

    我已经在 xml 布局文件中为 EditText 小部件设置了 maxLength 属性 它确实限制了字符的显示 但它仍然允许用户在键盘上按更多字母 并且退格键会删除这些额外的按键 而不是显示屏上的最后一个字母 我相信事情不应该是这样的 达
  • Django项目中大量页面如何组织分页?

    我有一个view py产品列表 from django shortcuts import render get object or 404 from models import ProductCategory Product Product
  • VB.net中是否有像SQL中那样的IN运算符

    是否有类似的函数或运算符 If RoleName in Val1 Val2 Val2 Then Go End If 代替 If RoleName Val1 Or RoleName Val2 Or RoleName Val2 Then Go
  • 有人可以解释这种行为吗?只需两行代码[重复]

    这个问题在这里已经有答案了 请解释一下这个片段 include
  • Bulbflow:neo4jserver Graph 和 neo4jserver Neo4jclient 之间的区别

    我现在正在尝试学习如何连接到 Neo4j 服务器并使用 Python 中的 Bulbflow 在其上运行 Cypher 查询 我不明白的是连接到 neo4j 服务器的两种可能性之间的区别 1 Graph http bulbflow com
  • 包含 std::string 常量的类

    所以我目前正在使用 C 进行一个学校项目 我对此并不熟悉 我想创建一个类 包含我所有的常量 字符串 整数 双精度 自己的类 我正在尝试这个 这在 Java 中一直对我有用 class Reference Picture Paths publ
  • 使用 TensorFlow 对象检测输出分数、类别和 ID 提取

    如何提取由用于对象检测的 Tensorflow 模型生成的图像中检测到的对象 对象类别 对象 ID 的输出分数 我想将所有这些详细信息存储到单独的变量中 以便以后将它们存储在数据库中 使用与此链接中找到的相同的代码https github
  • 两个日期之间的输出 mysql [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我需要像这样在MYSQL中输出 记录
  • 在 mongodb 中创建安全数据库

    我想在 mongodb 中创建安全的数据库 安全意味着应用程序必须传递用户名 密码才能连接到我的 mongodb 数据库 来自 Mongo Java 教程 MongoDB 可以在安全模式下运行 其中通过名称和密码身份验证控制对数据库的访问
  • 模拟Android AssetManager

    我有一段代码接受 Context 并将该上下文传递给私有方法 私有方法调用 getAssets open 来读取我的应用程序的资产文件夹中存在的文件 public void methodA Context ctx throws IOExce
  • 将服务器端 MVC 与 Backbone.js 相结合

    我将 NET MVC 用于所有服务器端逻辑并提供初始页面 但我的应用程序在客户端非常繁重 因此我采用了 Backbone JS 事实证明它非常有用 但我不确定如何构建我的系统以整合这两种技术 在我看来 我有两个选择 在服务器端从 MVC 中
  • ios中如何将字节数组转换为图像

    今天我的任务是将字节数组转换为图像 首先 我尝试将图像转换为字节数组 为了将图像转换为字节数组 我们首先要做的就是转换该特定图像 UIImage to NSData 然后我们将其转换为NSData到字节数组 这里我将给出示例代码 只需浏览
  • 为什么enable_shared_from_this有一个非虚拟析构函数?

    我有一个宠物项目 我用它来试验 C 11 的新功能 虽然我有使用 C 的经验 但我对 C 还很陌生 为了训练自己采用最佳实践 除了大量阅读之外 我启用了一些严格的编译器参数 使用 GCC 4 4 1 std c 0x Werror Wall
  • Twig 中的 {{ exception.message }} 不渲染 HTML

    我有这个控制器在哪里 Exception被提出了 我还没弄清楚哪个SF2Exception尚未使用 在一定条件下 就这个
  • Django - 将参数传递给 CBV 装饰器的正确方法?

    文档功能应用装饰器的不错选择 例如login required基于类的视图 https docs djangoproject com en dev topics class based views intro decorating the