我試圖解決如何創建一個Django REST框架ViewSet。創建一個Django REST框架ViewSet
我繼承了這個樣子的API調用:
/api/v1/user/<user_id>/like_count
/api/v1/user/<user_id>/friends/
/api/v1/user/login
/api/v1/user/logout/
在我的基地urls.py我有以下幾點:
urlpatterns = patterns('',
url(r'^api/v1/', include('api.urls')),
url(r'^$', TemplateView.as_view(template_name='base.html'), name='home'),
url(r'^docs/', include('rest_framework_swagger.urls'))
)
我有調用的API的應用程序。在API urls.py我:
from django.conf.urls import url, include
from rest_framework import routers
from api import views
router = routers.DefaultRouter()
router.register(r'user', views.UserViewSet)
urlpatterns = [
url(r'^', include(router.urls)),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]
在我的API/views.py文件我想創建一個處理URL調用的所有可能的變體UserViewSet類。
首先,我不能工作了,如果我要使用:
class UserViewSet(viewsets.ModelViewSet):
或...
class UserViewSet(APIView):
如果我理解正確的話,我可以應付
/api/v1/user/login
/api/v1/user/logout
使用類似的電話:
class UserViewSet(viewsets.APIView):
def login(self, request, format=None):
...
def logout(self,request, format=None):
但我不能解決如何滿足在URL中有<user-id>
的其他變體。
有沒有推薦的方法來做到這一點?
一些API調用有一個尾隨的'/',有些則沒有。這正是我得到的(以適應現有的移動應用程序)。
編輯:順便說一句,我已經做了兩次DRF教程,現在仍然無法看到如何做到這一點。
EDIT2:我非常努力地理解DRF文檔。任何人都可以提供一些示例代碼來處理我的用例嗎?
按照第DRF的網站上[教程](http://www.django-rest-framework.org/tutorial/quickstart/)。沒有開玩笑。 – Pynchia
是的!我已經完成了兩次教程,但我仍然沒有看到如何做到這一點。因此,這個問題在Stackoverflow。 –
在您實現自定義URL和內容之前,因爲沒有人意識到DRF可以自動執行此操作,請查看允許自定義路由和視圖的視圖集的修飾器的文檔。你正在尋找兩條細節路線和兩條列表路線。 –