自定义以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的方式修改。
點擊查看更多內(nèi)容
為 TA 點贊
評論
評論
共同學習,寫下你的評論
評論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦