Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django Tastypie-仅包含对象详细信息的资源_Python_Django_Rest_Tastypie - Fatal编程技术网

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

Python Django Tastypie-仅包含对象详细信息的资源,python,django,rest,tastypie,Python,Django,Rest,Tastypie,在使用Tastypie的Django中,是否有办法配置资源,使其仅显示对象详细信息 我想要一个url/user,它返回经过身份验证的用户的详细信息,而不是包含单个用户对象的列表。我不想使用/users/来获取用户的详细信息 以下是我代码的相关部分: from django.contrib.auth.models import User from tastypie.resources import ModelResource class UserResource(ModelResource):

在使用Tastypie的Django中,是否有办法配置资源,使其仅显示对象详细信息

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

以下是我代码的相关部分:

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"),
        ]
#Django
从django.contrib.auth.models导入用户
从django.conf.url导入url
#美味的
从tastypie.resources导入ModelResource
类UserResource(ModelResource):
类元:
queryset=User.objects.all()
资源名称='用户'
#不允许列表操作
列出\u允许的\u方法=[]
详细信息\u允许的\u方法=['get','put','patch']
#排除某些字段
排除=('first_name'、'is_active'、'is_staff'、'is_superuser'、'last_name'、'password'、)
#为请求用户应用筛选器
def应用授权限制(自身、请求、对象列表):
返回对象\u list.filter(pk=request.user.pk)
#重写URL,使GET:users/实际上是用户详细信息端点
def覆盖URL(自身):
返回[
url(r“^(?P%s)/$%self.\u meta.resource\u name,self.wrap\u view('dispatch\u detail'),name=“api\u dispatch\u detail”),
]

使用主键以外的内容获取资源的详细信息将在

到目前为止您有什么更详细的说明?告诉我们您的代码-看起来您使用的是而不是。@Tadeck我在问题中添加了代码的相关部分。我没有明确使用这些方法中的任何一种,但我想我希望始终使用
obj\u get
。请注意
apply\u authorization\u limits
已被弃用。那么,我们如何在以后的版本中实现相同的结果呢?