为了账号安全,请及时绑定邮箱和手机立即绑定

从asteapie的资源中删除列表端点

从asteapie的资源中删除列表端点

万千封印 2021-03-18 18:10:21
我的api上有一个总是返回登录用户的资源。资源是只读的。我希望列表uri充当详细信息uri,并删除详细信息网址。因此,/api/v1/user/将返回登录的用户,其他任何URL都会失败。这是我为实现这一目标所做的:class UserResource(ModelResource):    class Meta:        queryset = User.objects.all()        fields = ['email', 'name']        authentication = MultiAuthentication(SessionAuthentication(), BasicAuthentication())        authorization = Authorization()        list_allowed_methods = []        detail_allowed_methods = ['get']    def base_urls(self):        '''        The list endpoint behaves as the list endpoint.        '''        return [            url(r"^(?P<resource_name>%s)%s$" % (self._meta.resource_name, trailing_slash()), self.wrap_view('dispatch_detail'), name="api_dispatch_detail"),            url(r"^(?P<resource_name>%s)/schema%s$" % (self._meta.resource_name, trailing_slash()), self.wrap_view('get_schema'), name="api_get_schema")        ]    def obj_get(self, bundle, **kwargs):        '''        Always returns the logged in user.        '''        return bundle.request.user    def get_resource_uri(self, bundle_or_obj=None, url_name='api_dispatch_detail'):        bundle_or_obj = None        try:            return self._build_reverse_url(url_name, kwargs=self.resource_uri_kwargs(bundle_or_obj))        except NoReverseMatch:            return ''我之所以使用base_urls()而不是prepend_urls()因为我想删除其他网址。它工作正常,但是当我点击/api/v1/url时,出现错误它正在尝试到达缺少的列表端点。我该如何摆脱呢?
查看完整描述

2 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

class UserResource(ModelResource):

    class Meta:

        queryset = User.objects.all()

        fields = ['email', 'name']

        authentication = MultiAuthentication(SessionAuthentication(), BasicAuthentication())

        authorization = Authorization()

        list_allowed_methods = []

        detail_allowed_methods = ['get']


    def dispatch_list(self, request, **kwargs):

        return self.dispatch_detail(request, **kwargs)


    def obj_get(self, bundle, **kwargs):

        '''

        Always returns the logged in user.

        '''

        return bundle.request.user


    def get_resource_uri(self, bundle_or_obj=None, url_name='api_dispatch_list'):

        bundle_or_obj = None

        try:

            return self._build_reverse_url(url_name, kwargs=self.resource_uri_kwargs(bundle_or_obj))

        except NoReverseMatch:

            return ''


查看完整回答
反对 回复 2021-03-24
  • 2 回答
  • 0 关注
  • 197 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号