django - 我想将参数 isloggedin 用户传递给 django 前端
问题描述
我正在将用户对象列表传递给前端。前端想要分别显示当前登录的用户信息和其他用户信息。为此,我想在用户序列化程序中传递一个额外的字段。我正在使用视图集和序列化程序将用户列表传递给 django 前端。我该怎么做。
我的序列化器看起来像
class SomeUserSerializer(serializers.ModelSerializer):
"""
Serializer for `some_user` table
"""
isLogedInUser = serializers.SerializerMethodField('is_logged_in_user')
user = UserSerializer(many=False)
def is_logged_in_user(self, request):
return self.user==request.user
class Meta:
model = SomeUser
fields = ('user', 'something', 'isLogedInUser')
我的 is_logged_in_user 方法有问题。它应该与用户对象一起返回真或假标志,具体取决于它是否是当前登录的用户
解决方案
使用的序列化器方法采用isLogedInUser
一个名为request
. 但是,根据文档,该方法是使用被序列化的对象调用的,它是SomeUser
.
您需要更改参数并通过附加上下文获取请求,如下所示:
class SomeUserSerializer(serializers.ModelSerializer):
"""
Serializer for `some_user` table
"""
isLogedInUser = serializers.SerializerMethodField('is_logged_in_user', context={'request': request})
user = UserSerializer(many=False)
def is_logged_in_user(self, obj):
return obj.user == self.context['request'].user
class Meta:
model = SomeUser
fields = ('user', 'something', 'isLogedInUser')
推荐阅读
- perl - 为什么 Data::Dumper 显示链接到其他值的值?
- flatpak - What's a flatpak runtime?
- spring - 如何验证“授权:承载
“与骡子3.8? - c# - 窗体上的某些控件未在 C# windows 窗体中的某些窗体上调整大小
- r - 解决错误“对象
在地理编码上下文中找不到” - python - 如何将每日日期框架转换为每周日期框架(一列)?
- android - 如何在测试覆盖 Android Studio 中找到“命中”源
- typescript - 路线上的离子路由器吐司
- java - 在 java 中打印 setProperty 值
- javascript - Using Jest within webpack 4 project throws 'Jest encountered an unexpected token' error