Ich versuche, die Klasse CurrentUserDefault
für einen Serializer zu verwenden.
Die Dokumentation sagt:
Um dies zu nutzen, muss die "Anfrage" als Teil von das Kontextwörterbuch beim Instanziieren des Serialisierers.
Ich bin mir nicht sicher, wie ich den Serializer erstellen soll. In der Ansicht erstelle ich alle Serializer mit:
%Vor%Also habe ich versucht:
%Vor%und
%Vor%Und in beiden Fällen ist der Fehler der gleiche:
%Vor% Ich habe auch versucht, die Schlüssel des Wörterbuchs ( u'request'
) mit demselben Glück zu Unicode zu bringen.
Gibt es eine bessere Möglichkeit, den angemeldeten Benutzer an einen Serializer zu übergeben?
Ich verwende Django REST Framework 3.0 und Python 2.7.6
Django REST Framework behandelt die Serialisierung und Deserialisierung von Objekten mithilfe eines zentralen Serialisierers. Um das Deserialisieren und Serialisieren zu erleichtern, benötigt es manchmal ein wenig Kontext wie das aktuelle view
oder request
, das verwendet wird. In der Regel müssen Sie sich keine Gedanken darüber machen, da die generischen Ansichten diese automatisch für Sie übernehmen. Dies wird in der Dokumentation unter "Zusätzlichen Kontext einbeziehen" behandelt Es nutzt den optionalen Parameter context
für Serializer.
Wenn Sie Serializer manuell verwenden, muss der Kontext als Wörterbuch übergeben werden. Einige Felder erfordern bestimmte Schlüssel, aber in den meisten Fällen benötigen Sie nur den request
-Schlüssel als Referenz auf die eingehende Anfrage. Dadurch kann HyperlinkedRelatedField
eine vollständige URL generieren und Extras wie CurrentUserDefault
wie erwartet.
Das Kontextwörterbuch ist auch in generischen Ansichten als get_serializer_context
-Methode verfügbar, die das Wörterbuch automatisch mit häufig verwendeten Schlüsseln wie request
und view
füllen.
Tags und Links python django django-rest-framework