場所に関するコメントを取得したいとしましょう。私はこの要求をしたい:
/places/{PLACE_ID}/コメント
TastyPie でこれを行うにはどうすればよいですか?
Tastypie のドキュメントの例に従って、次のようなものをplaces
リソースに追加します。
class PlacesResource(ModelResource):
# ...
def prepend_urls(self):
return [
url(r"^(?P<resource_name>%s)/(?P<pk>\w[\w/-]*)/comments%s$" % (self._meta.resource_name, trailing_slash()), self.wrap_view('get_comments'), name="api_get_comments"),
]
def get_comments(self, request, **kwargs):
try:
obj = self.cached_obj_get(request=request, **self.remove_api_resource_names(kwargs))
except ObjectDoesNotExist:
return HttpGone()
except MultipleObjectsReturned:
return HttpMultipleChoices("More than one resource is found at this URI.")
# get comments from the instance of Place
comments = obj.comments # the name of the field in "Place" model
# prepare the HttpResponse based on comments
return self.create_response(request, comments)
# ...
アイデアは、/places/{PLACE_ID}/comments
URL とリソースのメソッド (get_comments()
この例では) の間の URL マッピングを定義することです。メソッドは のインスタンスを返す必要HttpResponse
がありますが、Tastypie が提供するメソッドを使用してすべての処理を行うことができます (によってラップされcreate_response()
ます)。tastypie.resources
モジュールを見て、Tastypie がリクエスト、特にリストを処理する方法を確認することをお勧めします。