0

我想使用带有一些稍微不同的网址的美味派。我希望他们是这样的:

/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')),
                ]
4

1 回答 1

0

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

首先,包裹视图避免了美味派的正常路径,而不是添加到它:

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')),
                ]
于 2013-01-25T22:45:19.230 回答