【问题标题】:Tastypie Urls and FiltersTastypie 网址和过滤器
【发布时间】:2013-01-09 22:20:39
【问题描述】:

我想使用一些 URL 略有不同的美味派。我希望他们是这样的:

/api/v1/city/London/make_default /api/v1/city/Paris/make_default /api/v1/city/Singapore/remove_city

城市本身可以是我数据库中城市表中的任何城市,资源名称是我要执行的方法。每种方法都有自己的资源。在美味派中,网址似乎给我带来了一些麻烦。我一直给我一个 301 重定向的 prepend_urls。

class CityResource(Resource):
    class Meta

     def make_default(self, request, city_name):
        return super(ViewTemplateResource, self).get_object_list(request)\
                        .filter(name=city_name, client=request.user).update(default=True)

    def prepend_urls(self):
        return [
            url(r"^city/(?P<city_id>[\w\d_.-]+)/(?P<resource_name>%s)/$" % self._meta.resource_name,
                                   self.wrap_view('make_default')),
                ]

【问题讨论】:

    标签: tastypie


    【解决方案1】:

    所以为了解决这个问题,我做了一些不同的事情:

    首先,wrap 视图避免了正常的路径,而不是添加到它:

    def dispatch_default(self, request, city_name, **kwargs):
        self.queryset = City.objects.filter(name=city_name, client=user)
        return self.dispatch('detail', request, **kwargs)  # could use super here too instead of copying the normal code
    
    
    def prepend_urls(self):
            return [
                url(r"^city/(.+)/(?P<resource_name>%s)$" % self._meta.resource_name,
                                       self.wrap_view('dispatch_detail')),
                    ]
    

    【讨论】:

      猜你喜欢
      • 2011-10-27
      • 2012-03-29
      • 1970-01-01
      • 2014-01-17
      • 2017-01-13
      • 2019-02-08
      • 2012-07-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多