gpt4 book ai didi

python - Django Tastypie - 仅包含对象详细信息的资源

转载 作者:太空宇宙 更新时间:2023-11-03 13:48:57 27 4
gpt4 key购买 nike

在带有 Tastypie 的 Django 中,有没有一种方法可以配置资源以使其仅显示对象详细信息?

我想要一个 url /user它返回经过身份验证的用户的详细信息,而不是包含单个用户对象的列表。我不想使用 /users/<id>获取用户的详细信息。

这是我的代码的相关部分:

from django.contrib.auth.models import User
from tastypie.resources import ModelResource

class UserResource(ModelResource):

class Meta:
queryset = User.objects.all()
resource_name = 'user'
allowed_methods = ['get', 'put']
serializer = SERIALIZER # Assume those are defined...
authentication = AUTHENTICATION # "
authorization = AUTHORIZATION # "

def apply_authorization_limits(self, request, object_list):
return object_list.filter(pk=request.user.pk)

最佳答案

我能够通过使用以下资源方法的组合来做到这一点

示例用户资源

#Django
from django.contrib.auth.models import User
from django.conf.urls import url

#Tasty
from tastypie.resources import ModelResource

class UserResource(ModelResource):
class Meta:
queryset = User.objects.all()
resource_name = 'users'

#Disallow list operations
list_allowed_methods = []
detail_allowed_methods = ['get', 'put', 'patch']

#Exclude some fields
excludes = ('first_name', 'is_active', 'is_staff', 'is_superuser', 'last_name', 'password',)

#Apply filter for the requesting user
def apply_authorization_limits(self, request, object_list):
return object_list.filter(pk=request.user.pk)

#Override urls such that GET:users/ is actually the user detail endpoint
def override_urls(self):
return [
url(r"^(?P<resource_name>%s)/$" % self._meta.resource_name, self.wrap_view('dispatch_detail'), name="api_dispatch_detail"),
]

Tastypie Cookbook 中更详细地解释了使用主键以外的东西来获取资源的详细信息。

关于python - Django Tastypie - 仅包含对象详细信息的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13521947/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com