Ich bin neu im Django Framework und eine Sache stört mich.Django url Muster mehrere Parameter (ohne pk)
Ich möchte eine einfache Rast Call:
www.abc.com/users/1/cantonments/1/
Wenn ich aus der Box (pk, PK1, PK2 ....) 'pk' in der URL-Muster alles verwenden funktioniert. Aber ich habe eine Berechtigungsfunktionalität, die die Parameter in Kwargs in der Form 'upk' und 'cpk' für Benutzer und Quartier erwartet. Also, wenn ich pk zu upk ändern, bricht alles. Irgendwie braucht die URL EINEN PK.
Dies funktioniert:
url(r'^users/(?P<pk>[0-9]+)/cantonments/(?P<cpk>[0-9]+)/$',
views.CantonmentDetail.as_view()),
Diese sieht nicht:
url(r'^users/(?P<upk>[0-9]+)/cantonments/(?P<cpk>[0-9]+)/$',
views.CantonmentDetail.as_view()),
Gibt es eine Möglichkeit, ein URL-Muster zu haben, die nicht mit pk einen Eintrag benötigt?
P. S. Der Fehler:
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.
EDIT:
Meine Ansicht ist einfach:
# 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:
I get_queryset Objekt zu erhalten geändert und es funktioniert.
def get_object(self):
queryset = self.filter_queryset(self.get_queryset())
obj = queryset.get(pk=self.kwargs['cpk'])
return obj
Edit3: Mit
lookup_url_kwarg = "cpk"
in der Klasse als gut funktioniert.
zeigen Sie Ihre Ansichten? – zaidfazil
Ihre View.py kann Problem bekommen Argument kann dies hinzufügen – Robert