Ich möchte einen URL-Namespace zu meinem AIP-Router hinzufügen, aber wenn ich das tue, sucht der Router immer noch nach URLs ohne Namespace:
%Vor% Die browsable API sucht nach URL-Namen wie 'user-list'
und 'user-detail'
still statt 'api:user-list'
, was ich gerne geschehen würde.
Ich gehe davon aus, dass es eine einfache Lösung dafür gibt (das scheint eine ziemlich normale Sache zu sein), aber ich finde keine Lösung in den django-rest-Framework-Dokumenten. Wenn ich etwas aus den Dokumenten verpasse, bitte teilen Sie einen Link oder wenn ich mich dem Unrecht annähere (zB "Warum würdest du das tun, es ist eine schlechte Übung" oder was auch immer), bitte erkläre warum oder was der korrekte Weg zur Verwaltung von APIs wäre Sein. Danke!
Es gibt derzeit eine Pull-Anfrage, die derzeit geöffnet ist . Bitte zögern Sie nicht, an der Diskussion teilzunehmen.
Dies ist eine sehr alte Frage und die derzeit akzeptierte Antwort von Carlton Gibson ist nur ein Link zu einer Pull-Anfrage auf GitHub.
Wenn Sie das Web nach Django REST Framework-Routern mit Namespace durchsuchen, steht es an erster Stelle in den Ergebnissen. Es scheint die einzige Frage bei SO zu diesem Thema zu sein.
Da es keine konkrete Antwort mit Codebeispiel gibt, möchte ich hier meine Lösung hinzufügen.
Nehmen wir die EventViewSet
aus der Antwort des OP. Für diesen Viewset sollte eine Modellklasse Event
und ein Modell-Serializer EventSerializer
vorhanden sein.
Das EventSerializer
könnte so aussehen:
Dies ist ein Beispiel für HyperlinkedModelSerializer
, das url
field enthält.
Beliebige Hyperlink-Felder wie HyperlinkedIdentityField
oder HyperlinkedRelatedField
, die view_name
als Argument annehmen, sollten den korrekten View-Namen mit dem Namespace entweder in der Deklaration oder über extra_kwargs
übergeben werden.
Für eine angenommene CommentSerializer
(entsprechend der CommentViewSet
) könnte es wie folgt aussehen:
Tags und Links python django django-views django-urls django-rest-framework