わずかに異なるURLでtastypieを使用したいと思います。私は彼らがこのようであることを望みます:
/api/v1/city/London/make_default /api/v1/city/Paris/make_default /api/v1/city/Singapore/remove_city
都市自体はデータベースの都市テーブル内の任意の都市にすることができ、リソース名は実行したいメソッドです。各メソッドには独自のリソースがあります。Tastypie では、この URL で問題が発生するようです。私が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')),
]