当前位置: 首页 > 面试题库 >

如何在Django-Rest-Framework序列化程序中获取Request.User?

丌官远
2023-03-14
问题内容

我已经尝试过类似的方法,但是它不起作用。

class PostSerializer(serializers.ModelSerializer):

    class Meta:
        model = Post

    def save(self):
        user = self.context['request.user']
        title = self.validated_data['title']
        article = self.validated_data['article']

我需要一种能够从我的Serializer类访问request.user的方法。


问题答案:

你不能request.user直接访问。你需要访问请求对象,然后获取用户属性。

像这样:

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

为了更安全,

user = None
request = self.context.get("request")
if request and hasattr(request, "user"):
    user = request.user


 类似资料:
  • 问题内容: 情况 在Django REST Framework的验证中工作时,我注意到字段总是被验证,即使这样做不一定有意义。以以下示例进行模型的序列化: 我有一个创建用户的端点。因此,有一个领域和一个领域。如果两个字段不匹配,则无法创建用户。同样,如果所请求的已经存在,则无法创建用户。 用户为上述每个字段发布了不正确的值 已在序列化程序中实现的实现(请参见下文),以捕获不匹配和字段 实施: 问题

  • 本文向大家介绍django-rest-framework 加快序列化程序查询,包括了django-rest-framework 加快序列化程序查询的使用技巧和注意事项,需要的朋友参考一下 示例 假设我们有Travel很多相关领域的模型: 我们想/travels通过ViewViewSet构建CRUD 。 这是简单的视图集: 该ViewSet的问题在于我们的Travel模型中有许多相关字段,因此Dja

  • 问题内容: 在Django Rest Framework中,当一个序列化器嵌套在另一个序列化器中时,如何过滤它? 我的过滤器被强加在DRF视图集中,但是当您从另一个序列化器内部调用序列化器时,嵌套序列化器的视图集将永远不会被调用,因此嵌套结果看起来是未经过滤的。 我尝试在原始视图集上添加过滤器,但是它似乎无法过滤嵌套结果,因为嵌套结果被称为单独的预提取查询。(您看到嵌套的序列化程序是反向查找。)

  • 问题内容: 我有一个具有可选字段的对象。我以这种方式定义了我的序列化器: 我认为 如果不存在,可以绕过该字段。但是,在文档中提到这会影响反序列化而不是序列化。 我收到以下错误: 当我尝试访问序列化实例时,这正在发生。(这是否意味着反序列化导致了这一问题?) 对于没有的实例会发生这种情况。如果我从序列化程序类中忽略它,则可以正常工作。 如何正确执行此操作?即,使用可选字段序列化对象。 问题答案: 序

  • 问题内容: 使用 django-rest-framework 3.0 并具有以下简单模型: 并给出此JSON请求: 如何编写嵌套的序列化程序来处理此JSON,并为给定的每个序列号创建一个新页面或更新(如果存在)。 我知道用实例化序列化程序会更新当前序列化程序,但是如何在嵌套序列化程序的方法中使用它呢? 问题答案: 首先,您要支持创建新的图书实例还是仅更新现有的图书实例? 如果您只想创建新的图书实例

  • 问题内容: 我正在使用django rest框架来创建API。我有以下型号: 为类别创建序列化器: …这将为我提供: 我将如何从Item序列化程序获得相反的结果,即: 我已经阅读了有关其余框架的反向关系的文档,但这似乎与非反向字段的结果相同。我是否缺少明显的东西? 问题答案: 只需使用相关字段而不进行设置。 请注意,这也是因为你想要将输出命名为,而实际字段是,因此需要source在序列化程序字段上