這是prepend_urls
的用途 - 您可以將自定義端點添加到現有方法。他們即裝即用,就像普通視圖一樣工作,但您現在可以從資源中調用所需的所有功能 - 並返回普通HttpResponse
或搭載現有的Tastypie函數以返回豐富的對象。如果我
def prepend_urls(self):
return [
#...
url(r"^(?P<resource_name>%s)/is_authenticated?$" % (self._meta.resource_name), self.wrap_view('is_authenticated')),
#...
]
# ...other methods in your Resource...
def is_authenticated(self, request, **kwargs):
if self._meta.authentication.is_authenticated(request):
return HttpResponse("1")
else:
return HttpResponse("0")
或者:
舉例來說,如果我有一個User
資源,並希望提供一個端點,以確定用戶是否正在通過返回1
或0
認證,我應該這樣做實際上想要返回驗證用戶的實際用戶資源,我可以(例如)用return self.get_detail(request, id=request.user.id)
替換return HttpResponse("1")
- 有效地模擬對/user/?id=[authenticated user's ID]
的呼叫。
來源
2013-08-17 18:18:50
cpf
你不需要使用'ModelResource'還有一個'Resource'類可以繼承http://django-tastypie.readthedocs.org/en/latest/resources.html#why-resource-vs- modelresource –
@HeddevanderHeide我從來沒有提到'ModelResource',而是'Resource',並且如果你看一下,即使'Resource'也假定某種數據模型,我不感興趣,所以這對我沒有任何幫助。 –