Django-REST-Framework - CurrentUserDefault-Verwendung

8

Ich versuche, die Klasse CurrentUserDefault für einen Serializer zu verwenden.

%Vor%

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

    
alfonso.kim 24.12.2014, 06:15
quelle

1 Antwort

11

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.

%Vor%

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.

    
Kevin Brown 24.12.2014, 18:39
quelle