我是Django框架的新手,有一件事讓我煩惱。Django url pattern multiple參數(不包括pk)
我想要一個簡單的REST調用:
www.abc.com/users/1/cantonments/1/
如果我在URL模式都使用 'PK' 開箱(PK,PK1,PK2 ....)的。 但我有一些權限的功能,期望在形式'upk'和'cpk'爲用戶和營地kwargs中的參數。所以,如果我改變pk到upk一切都打破。不知怎的,該網址需要ONE PK。
這工作:
url(r'^users/(?P<pk>[0-9]+)/cantonments/(?P<cpk>[0-9]+)/$',
views.CantonmentDetail.as_view()),
這並不:
url(r'^users/(?P<upk>[0-9]+)/cantonments/(?P<cpk>[0-9]+)/$',
views.CantonmentDetail.as_view()),
有沒有辦法有一個不需要與PK一個條目的URL模式?
P.S.錯誤:
Expected view CantonmentDetail to be called with a URL keyword argument named "pk". Fix your URL conf, or set the `.lookup_field` attribute on the view correctly.
編輯:
我的看法很簡單:
# Authenticated User can show Cantonment Detail
class CantonmentDetail(generics.RetrieveAPIView):
serializer_class = serializers.CantonmentSerializer
permission_classes = [permissions.IsAuthenticated]
def get_queryset(self):
return Cantonment.objects.filter(pk=self.kwargs['cpk'])
EDIT2:
我改變get_queryset獲取對象和它的作品。
def get_object(self):
queryset = self.filter_queryset(self.get_queryset())
obj = queryset.get(pk=self.kwargs['cpk'])
return obj
EDIT3: 使用
lookup_url_kwarg = "cpk"
在類的工作也是如此。
顯示您的看法? – zaidfazil
你的view.py可能會問題得到參數可以加上這個 – Robert