Django REST Framework (DRF) 中“可调用默认函数”的正确使用

2023-12-11

问题:

我怎样才能访问序列化器实例 or 任何相关论点 in the 默认可调用函数DRF 场?


设想:

我有一个序列化器配置如下,

def bar_value_callable_function(serializer_instance):
    if serializer_instance.context['request'].method == 'GET':
        return 'return value One'
    return 'return value Two'

类 FooSerializer(serializers.Serializer): 栏 = 序列化器.CharField(源='foo.bar',默认=bar_value_callable_function)


Update
对于DRF>=3.12,使用这个默认类之王

class DefaultBarValue:
    requires_context = True

    def __call__(self, serializer_instance):
        if serializer_instance.context['request'].method == 'GET':
            return 'return value One'
        return 'return value Two'

pass a 类实例代替function to the default争论

# default callable class
class DefaultBarValue:
    """
    "Method `set_context` on defaults is deprecated and will
    no longer be called starting with 3.12. Instead set
    `requires_context = True` on the class, and accept the
    context as an additional argument.
    """
    requires_context = True  # for DRF>=3.12
    serializer_instance = None # not required for DRF>=3.12

    def set_context(self, serializer_instance): # not required for DRF>=3.12
        self.serializer_instance = serializer_instance

    def __call__(self, serializer_instance=None):
        if serializer_instance is None:  # will be None for older versions of DRF
            if self.serializer_instance.context['request'].method == 'GET':
                return 'return value One'
            return 'return value Two'
        else:  # for DRF>=3.12
            if serializer_instance.context['request'].method == 'GET':
                return 'return value One'
            return 'return value Two'

# serializer
class FooSerializer(serializers.Serializer):
    bar = serializers.CharField(source='foo.bar', default=DefaultBarValue())
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django REST Framework (DRF) 中“可调用默认函数”的正确使用 的相关文章

  • Pandas 在列级别连接数据帧时添加键

    根据 Pandas 0 19 2 文档 我可以提供keys参数来创建结果多索引 DataFrame 一个例子 来自 pandas 文档 是 result pd concat frames keys x y z 我将如何连接数据框以便我可以在
  • 如何使用 Twython 将 oauth_callback 值传递给 oauth/request_token

    Twitter 最近刚刚强制执行以下规定 1 您必须通过oauth callbackoauth request token 的值 这不是可选的 即使您已经在 dev twitter com 上设置了一个 如果您正在执行带外 OAuth 请通
  • Colab 的使用限制持续多久?

    当我对同一帐户的两个笔记本同时使用两个 GPU 约半小时后 Colab 已 12 小时未运行 此消息不断弹出 由于 Colab 中的使用限制 您当前无法连接到 GPU 自从我上次使用 colab 以来已经过去了大约两个小时 但该消息仍然弹出
  • 类型错误:translate() 只接受一个参数(给定 2 个参数)[重复]

    这个问题在这里已经有答案了 我的代码在 python 2 x 版本上运行良好 但是当我尝试在 python 3 x 版本上运行它时 出现错误 主题 需要缩写短信编码中的任何消息 Code def sms encoding data star
  • Python ElementTree 获取带有命名空间的属性

    我试图访问 XML 中的 def 所以在这个例子中我会得到Evolus Common PlainTextV2作为输出 我似乎无法弄清楚如何获取具有名称空间的属性 如果我想得到id它工作得很好 Python for content ns in
  • 为什么在 __init__ 函数中声明描述符类会破坏描述符功能?

    在下面的 B 类中 我想要 set 每当您赋值给 A 类中的函数时 就会调用该函数B a 相反 将值设置为B a覆盖B a与价值 C类分配给C a工作正常 但我想为每个用户类都有一个单独的 A 实例 即我不想在 C 的一个实例中更改 a 来
  • 如何不断地将 STDOUT 发送到我的 python TCP 服务器?

    我有简单的 python echo 服务器 它使用套接字 并向客户端回显随机数 我有另一个程序 每 2 秒将值打印到标准输出 如果它只是一个脚本 我可以像这样重定向 stdout python script py 并像这样在脚本中获取它da
  • Django:如何为应用程序添加中文支持

    我正在尝试将中文添加到我用 Django 编写的应用程序中 但我确实遇到了困难 我花了半天时间尝试了不同的方法 但没有成功 我的应用程序支持几种语言 这是设置 py file TIME ZONE Europe Dublin LANGUAGE
  • Django - 使 ModelForm(ImageField 的)仅接受某些类型的图像

    我将 Pillow 2 3 0 与 Django 一起使用 并且在 models py 中有一个 ImageField 如下所示 class UserImages models Model user models ForeignKey Us
  • Python Tkinter 网格复选框

    我想知道是否有一种简单的方法可以使用 Tkinter 创建复选框网格 我正在尝试制作一个由 10 行和 10 列 即 100 个复选框 组成的网格 以便每行只能选择两个复选框 编辑 我正在使用带有spyder的python 2 7 到目前为
  • 安塞布尔 + 10.11.6

    我在 非常 干净地安装 10 11 6 时遇到了 Ansible 的奇怪问题 我已经安装了brew zsh oh my zsh Lil snitch 和1password 实际上没有安装其他任何东西 我安装了ansible brew ins
  • 在 Python 中将嵌套字典位置作为参数传递

    如果我有一个嵌套字典 我可以通过索引来获取键 如下所示 gt gt gt d a b c gt gt gt d a b c 我可以将该索引作为函数参数传递吗 def get nested value d path a b return d
  • 在 matplotlib 中将 3D 背景更改为黑色

    我在将 3D 图表的背景更改为黑色时遇到问题 这是我当前的代码 当我将facecolor设置为黑色时 它会将图表内部更改为灰色 这不是我想要的 fig plt figure fig set size inches 10 10 ax plt
  • 获取 python 模块的 2 个独立实例

    我正在与以非 OO 方式编写的 python 2 x API 进行交互 它使用模块全局范围来处理一些内部状态驱动的东西 在它不再是单例的情况下需要它 并且修改原始代码 不是我们的 不是一个选择 如果不使用单独解释器的子进程运行 有什么方法可
  • Django:显示管理员验证错误的自定义错误消息

    我正在使用 Django 1 2 4 我有一个模型 其中有一个需要验证的字段 当验证失败时 我想向用户显示自定义错误消息 模型编辑是在管理界面中完成的 这就是我目前正在做的事情 def clean fields self exclude N
  • 访问影子 DOM 中的元素

    是否有可能查找 Shadow DOM 中的元素与蟒蛇硒 示例用例 我有这个input with type date
  • scikit-learn kmeans 聚类的初始质心

    如果我已经有一个可以作为初始质心的 numpy 数组 我该如何正确初始化 kmeans 算法 我正在使用 scikit learn Kmeans 类 这个帖子 具有选定初始中心的 k 均值 https stackoverflow com q
  • “yield item”与 return iter(items) 相比有何优点?

    在下面的示例中 resp results 是一个迭代器 版本1 items for result in resp results item process result items append item return iter items
  • gnuplot:第 1 行:无效命令

    stackoverflow 上可爱的人们大家好 我正在尝试使用 gnuplot 绘制数据 我首先阅读表格并提取我想要的数据 我将此数据写入 dat 文件 截至目前 我只是尝试通过命令行绘制它 但会添加必要的代码以在 python 脚本工作后
  • 如何从Python枚举类中获取所有值?

    我正在使用 Enum4 库创建一个枚举类 如下所示 class Color Enum RED 1 BLUE 2 我要打印 1 2 作为某处的列表 我怎样才能实现这个目标 您可以执行以下操作 e value for e in Color

随机推荐

  • 类助手不会覆盖祖先的虚拟方法

    我一直将类助手理解为扩展类或部分类 它们的作用就像原始基类代码的扩展 如果我复制代码的接口部分并将其添加到基类中 并在实现中也这样做 那么代码的运行方式将与助手的运行方式完全相同 这让我始终了解助手中的多态性以及为什么它们不能重写基类中的方
  • Facebook 的通知(数据库实现)

    我想知道 Facebook 如何实现他们的通知系统 因为我想做类似的事情 FooBar 评论了你的状态 Red1 Green2 和 Blue3 对您的照片发表了评论 MegaMan 和其他 5 人评论了您的活动 我无法将多个通知写入单个记录
  • 读取文件时脚本跳过第二个 for 循环

    我正在尝试读取日志文件并将某些值与预设阈值进行比较 我的代码设法记录第一个的原始数据for在我的函数中循环 我添加了打印语句来尝试弄清楚发生了什么 并且我成功地推断出我的第二个 for 循环从未 发生 这是我的代码 def smartTes
  • 将 DataAnnotations 添加到自动生成的 DBML 类? MVC 2.0 ASP.NET

    我担心这样做 因为当 dbml 文件再次自动生成时 通常是这样 我的更改将被覆盖 我正在考虑做一个部分类并写出相同的属性来注释它们 但担心它会抱怨重复 而我什至无法实验的原因让我想到了问题的第二部分 我的 dbml 文件列表上的可扩展箭头丢
  • itextsharp 中的阿拉伯语编码

    当我尝试使用 C 这段代码创建阿拉伯语 PDF 时 生成的 PDF 文件包含离散字符 有什么帮助我无法获得连续字符吗 Create our document object Document Doc new Document PageSize
  • stl() 分解不接受单变量 ts 对象?

    我对 R 中的 stl 时间序列分解函数有疑问 告诉我我的 ts 对象不是单变量 而实际上它是单变量 tsData lt ts data dummyData start c 2012 1 end c 2014 12 frequency 12
  • 使用带有类别的 dplyr

    我有一个数据集 其中包含不同地点不同物种的计数值 该数据集不包括对物种进行调查但未发现的地点 计数 0 我尝试使用 dplyr Complete 函数来填写所有站点 但我不断收到以下错误消息 Error by can t contain j
  • 当我从模型中读取项目时,项目从组合框中消失

    I have QComboBox我设置了QStandardItemModel因为我需要其中的多选复选框 问题是 当我读取文本值并检查组合框中项目的状态时 它们从组合中消失 这就是我将模型设置为组合框的方法 areas Area one Ar
  • 将 vba 转换为 vb6 并创建 .dll - 操作方法 - 提示、技巧和风险

    我应该将用 VBA Excel 编写的大量代码转换为 VB6 但我真的不知道我必须照顾什么或从哪里开始 因此 如果能从 VB6 专家那里得到一些提示那就太好了 我已经安装了 MS Visual Studio 并进行了一些尝试 但我不是 VB
  • VBA 复制并粘贴枢轴值和格式

    我尝试复制并粘贴数据透视表 但我想保留值和格式 Sub PivotTablePaste Set pt Worksheets Sheet1 PivotTables 1 pt TableRange2 Copy With Worksheets S
  • Bash shell 中的正则表达式密码验证

    我正在使用正则表达式Bash shell 脚本 我使用下面的正则表达式代码来检查密码标准 密码长度应至少为 6 个字符 其中至少有一位数字和至少一个大写字母 我在正则表达式验证工具中进行了验证 我形成的正则表达式工作正常 但是 它在 Bas
  • 如何将 MTM 测试用例从 TFS 2013 迁移到 VSTS?

    我们拥有数千本手册的遗产测试用例在我们本地的 Microsoft 测试管理器中创建TFS 2013 我们正在努力将他们转移到VSTS事实证明这很困难 I 据我所知 目前微软还没有官方的迁移工具 尽管他们正在开发一种用于完整数据迁移 II 我
  • 如何设置 nvcc 以使用 Windows SDK 7.1 中的 Visual C++ Express 2010 x64?

    我正在使用 Windows SDK 7 1 扩展的 Visual C Express 2010 构建 64 位应用程序 以添加 64 位编译器 当我在 32 位模式下使用 nvcc 时 它运行良好 当我在 64 位模式下使用它时 出现以下错
  • SimpleDateFormat 方法解析中可能出现错误

    我收到一个表示日期的字符串 我需要将此字符串转换为日期 并验证该字符串是否为有效日期 我收到字符串 33 12 2013 解析方法返回日期 01 01 2014 代码 Date fechaVencimientoFormateada Simp
  • BundleTable.EnableOptimizations true 破坏了 jquery-ui all.css

    在 Asp Net MVC 5 应用程序中 我正在创建一个样式包egisterBundles method 我在用着jquery ui 而不是列出所有jquery ui我单独使用的 css 文件all css 导入所有其余的 代码如下所示
  • DevExtreme 图表中同一线条的混合线条样式

    您好 我第一次使用 DevExtreme 框架的图表 因为我正在为我的 Web 应用程序寻找一个好的图表插件 它可以解决我的一些特殊需求 目前我的图表看起来像这样 我不能把它放在小提琴或 stackoverflow 代码片段中 因为当我为
  • 如何使用 durandal 处理/忽略不良路线?

    我正在尝试有条件地阻止访问某条路线 我认为这可以通过guardRoute来完成 http durandaljs com documentation Router function guardRoute routeInfo params in
  • 将 geom_point 和 geom_line 合并在一个图中

    我有两个与此类似的数据框 date lt c 2014 07 06 2014 07 06 2014 07 06 2014 07 07 2014 07 07 2014 07 07 2014 07 08 2014 07 08 2014 07 0
  • 通过xquery更改元素的值

  • Django REST Framework (DRF) 中“可调用默认函数”的正确使用

    问题 我怎样才能访问序列化器实例 or 任何相关论点 in the 默认可调用函数DRF 场 设想 我有一个序列化器配置如下 def bar value callable function serializer instance if se