Django REST Framework - CurrentUserDefault 使用

2024-06-20

我正在尝试使用CurrentUserDefault一个序列化器的类。

user = serializers.HiddenField(default=serializers.CurrentUserDefault())

文档说:

为了使用它,“请求”必须作为 实例化序列化器时的上下文字典。

我不确定如何创建序列化器。在视图上,我使用以下命令创建所有序列化器:

serializer = NewModelSerializer(data=request.data)

所以我尝试过:

context = dict(request.data)
context['request'] = request
serializer = NewModelSerializer(data=context)

and

context['request'] = {'user': request.user}

在这两种情况下,错误是相同的:

Exception Type:     KeyError
Exception Value:    'request'
on:
/Users/Alfonso/virtualenvs/sports/lib/python2.7/site-packages/rest_framework/fields.py in set_context

        self.user = serializer_field.context['request'].user

我还尝试对字典的键进行统一编码(u'request')同样幸运。

有没有更好的方法将登录用户传递给序列化器?

我正在使用 Django REST Framework 3.0 和 Python 2.7.6


Django REST Framework 使用中央序列化器处理对象的序列化和反序列化。有时为了帮助反序列化和序列化,它需要一些上下文,例如当前的view or request正在使用。您通常不必担心它,因为通用视图会自动为您处理它。这在下面的文档中有介绍“包括额外的上下文” http://www.django-rest-framework.org/api-guide/serializers/#including-extra-context它利用了可选的context序列化器的参数。

当您手动使用序列化器时,上下文必须作为字典传入。有些字段需要特定的键,但大多数情况下您只需要requestkey 作为传入请求的引用。这将允许HyperlinkedRelatedField生成完整的 URL,以及诸如CurrentUserDefault按预期执行。

context = {
    "request": self.request,
}

serializer = NewModelSerializer(data=request.data, context=context)

上下文字典也可在通用视图上使用,因为get_serializer_context方法,它将自动使用常用键(例如request and view.

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

Django REST Framework - CurrentUserDefault 使用 的相关文章

  • scipy.misc.imshow RuntimeError('无法执行图像视图')

    我正在测试scipy misc imshow https docs scipy org doc scipy 0 15 1 reference generated scipy misc imshow html我得到了运行时错误 无法执行图像查
  • pip 安装失败,SSL 证书验证失败 (_ssl.c:833)

    我无法通过 pip install 安装任何外部 python 模块 我已经正确安装了 python 但如果我使用 pip install 它会显示此错误 这是我运行后的代码pip install pytesseract C Users 1
  • 在 Python 中绘制分类数据的三个维度

    我的数据包含三个我试图可视化的分类变量 城市 五个之一 职业 四种之一 血型 四种之一 到目前为止 我已经成功地以一种我认为易于使用的方式对数据进行了分组 import numpy as np pandas as pd Make data
  • 如何从 Lua 调用 Python 函数?

    我想从我的 lua 文件运行 python 脚本 我怎样才能实现这个目标 Example Python代码 sum py file def sum from python a b return a b Lua code main lua f
  • 了解 asyncio 已经运行的永久循环和挂起的任务

    我在理解如何将新任务挂起到已经运行的事件循环中时遇到问题 这段代码 import asyncio import logging asyncio coroutine def blocking cmd while True logging in
  • python-polars 通过分隔符将字符串列拆分为许多列

    在 pandas 中 以下代码会将 col1 中的字符串拆分为许多列 有没有办法在极地做到这一点 d col1 a b c d a b c d df pd DataFrame data d df a b c d df col1 str sp
  • python:是否有用于对输入流进行分块的库函数?

    我想对输入流进行分块以进行批处理 给定一个输入列表或生成器 x in 1 2 3 4 5 6 我想要一个能够返回该输入块的函数 说 如果chunk size 4 then x chunked 1 2 3 4 5 6 这是我一遍又一遍地做的事
  • 如何为 Python 中的应用程序设置专用屏幕区域?

    MS OneNote 就是一个很好的例子 它可以选择固定在屏幕的一侧 并将所有其他窗口推到一侧 当最大化或调整其他窗口大小时 它们只能扩展到 OneNote 的边缘 Python 使用 Tkinter 或其他模块是否具有此功能 感谢您的帮助
  • django 表单错误打印 __all__

    默认登录模板中的代码 form errors 当帐户处于非活动状态时生成以下 html 输出 ul class errorlist li all ul class errorlist li This account is inactive
  • 如何在交互式绘图(Python)中获得鼠标指向的(x,y)位置?

    我使用 ipython 笔记本 带有魔法 matplotlib nbagg 我正在审查matplotlib widget Cursor但仅查看光标widgets Cursor http matplotlib org 1 4 3 exampl
  • 使 np.loadtxt 使用多个可能的分隔符

    我有一个程序可以读取数据文件 用户可以选择他们想要使用的列 我希望它对于输入文件更加通用 有时 列可能如下所示 10 34 24 58 8 284 6 121 有时它们可 能看起来像这样 10 34 24 58 8 284 6 121 我希
  • PyCharm - 如何挂起所有线程

    我们使用 PyCharm 5 0 1 进行多线程调试 当它在断点处停止时 只有特定线程停止 而所有其他线程继续 这使得 冻结时刻 和检查参数值以及其他线程的当前状态变得困难 当其中一个线程在断点处停止时 是否可以挂起所有线程 这在最新的 P
  • 检查多个 pd.DataFrame 是否相等

    是否有一种 Pythonic 方式 无循环或递归 来检查是否超过两个pd DataFrames 例如 pd DataFrames 列表 彼此相等吗 就像是 all x equals dfs 0 for x in dfs with dfs数据
  • 如何测试列表中多个值的成员资格

    我想测试两个或多个值是否在列表中具有成员资格 但我得到了意外的结果 gt gt gt a b in b a foo bar a True 那么 Python 可以同时测试列表中多个值的成员资格吗 这个结果意味着什么 See also How
  • Python:帮助(numpy)在退出时导致段错误

    我遇到了一个奇怪的现象 在 python 解释器中 我执行以下操作 gt gt gt import numpy gt gt gt help numpy 帮助显示正确 但一旦我按 q 返回解释器 Segmentation fault core
  • Scrapy的redirect_urls异常.KeyError

    我是 Scrapy 和 Python 的新手 最近推出了我的第一个蜘蛛 有一个功能似乎以前有效 但现在它只适用于我试图废弃的一些网站 代码行是 item url direct response request meta redirect u
  • Pip 突然使用了错误版本的 Python

    在 os x 上使用 pip 时遇到一个奇怪的问题 据我所知 快速查看我的 bash history 似乎可以确认 我最近没有对我的配置进行任何更改 唉 pip 命令似乎突然使用了与以前不同的 python 版本 到目前为止 我使用命令 p
  • Flask 扩展未在 app.extensions 中注册

    我想访问在我的 Flask 应用程序上注册的一些扩展 我尝试使用app extensions 但我初始化的一些扩展不在字典中 from flask import current app current app extensions get
  • 使用 django 和 tastypie 通过 RESTful api 发布文件

    我正在为 Django 网站创建 RESTful api 我在用tastypie https github com toastdriven django tastypie因为这样做 我的问题是我无法设计如何通过此 api 发布图像或文件 我
  • django admin 中内联模型的分页器

    我有这个简单的 django 模型 由一个传感器和特定传感器的值组成 每个日射强度计的值数量很多 gt 30k 是否可以以某种方式分页PyranometerValues在特定日期或一般情况下将分页器应用于管理内联视图 class Pyran

随机推荐