栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

自定义token方式修改/查询object信息

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

自定义token方式修改/查询object信息

自定义以token方式获取object信息

目标:通过header里传入的token取到对应账号信息。
问题描述:
Django rest framework内的retrive方法默认是通过pk传递参数而选择对应的object信息。我需要改成通过header内的token取对应user,在通过user取user-address表里面的账号信息
结果图

原来代码:

    def get_object(self):
 queryset = self.filter_queryset(self.get_queryset())

 # Perform the lookup filtering.
 lookup_url_kwarg = self.lookup_url_kwarg or self.lookup_field

 assert lookup_url_kwarg in self.kwargs, (
     'Expected view %s to be called with a URL keyword argument '
     'named "%s". Fix your URL conf, or set the `.lookup_field` '
     'attribute on the view correctly.' %
     (self.__class__.__name__, lookup_url_kwarg)
 )

 filter_kwargs = {self.lookup_field: self.kwargs[lookup_url_kwarg]}
 obj = get_object_or_404(queryset, **filter_kwargs)

 # May raise a permission denied
 self.check_object_permissions(self.request, obj)

 return obj

按照原来代码的样式进行模仿

修改代码:

class AccountUserRetrieveUpdate(generics.RetrieveUpdateAPIView):
    queryset = AccountUser.objects.all()
    serializer_class = AccountUserSerializer
    def get_object(self):
 queryset = self.filter_queryset(self.get_queryset())
 filter_kwargs = {'name':self.request.user}
 obj = get_object_or_404(queryset,**filter_kwargs)
 self.check_object_permissions(self.request, obj)

 return obj

由于put,patch,get这些方法都使用get_object方法,所以put,get,patch都可以以token的方式修改。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/225325.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号