django redirect () mit Parametern

7

Es wurden bereits einige ähnliche Fragen gestellt, aber ich konnte nach langen Stunden keine Antwort auf mein Problem finden.

Im folgenden Code, wenn ich von "myView" mit "username" zu "anotherView" umadressiere, funktioniert es wie erwartet. Aber ich muss auch "Bereich" -Parameter in diese Weiterleitung aufnehmen, da dieser "Bereich" für die Vorlage erforderlich ist, die nach der Umleitung verwendet wird. Immer wenn ich es versuche, bekomme ich mehrere Fehler wie:

- "Mischen Sie nicht * args und ** kwargs im Call to reverse ()"

Gibt es eine Möglichkeit, dies so zu verwalten, wie ich es möchte?

%Vor%     
mco 28.02.2012, 20:03
quelle

4 Antworten

20

redirect ist lediglich ein Wrapper um HttpResponseRedirect , der automatisch reverse aufruft, um die URL zu erstellen, an die umgeleitet werden soll. Daher sind die Parameter, die Sie übergeben, nicht willkürlich. Sie müssen identisch sein und an reverse übergeben werden, und zwar nur an diejenigen, die zum Erstellen der URL erforderlich sind.

Viele Menschen scheinen Probleme zu haben, zu verstehen, dass Daten nicht einfach willkürlich an eine Ansicht weitergegeben werden können. HTTP ist ein zustandsloses Protokoll: Jede Anforderung existiert für sich selbst, als ob der Benutzer noch nie auf einer anderen Seite der Site gewesen wäre. Das Konzept einer Sitzung wurde erstellt, um einer zusammenhängenden Einheit wie einer Website ein Gefühl von "Staat" zu geben. Bei Sitzungen werden Daten in irgendeiner Form von persistentem Speicher und einem "Schlüssel" gespeichert, um nachzuschlagen, dass Daten an den Client (typischerweise den Browser des Benutzers) gegeben werden. Beim nächsten Laden der Seite sendet der Client den Schlüssel zurück an den Server, und der Server verwendet ihn, um die Daten nach dem Zustand zu suchen.

Wenn Sie Daten aus einer Ansicht in einer anderen Ansicht benötigen, müssen Sie sie daher der Sitzung hinzufügen, Ihre Weiterleitung durchführen und die Daten in der Sitzung in der nächsten Ansicht nachsehen.

    
Chris Pratt 28.02.2012, 20:36
quelle
2

Rufen Sie die Zielansichtsfunktion nicht einfach nur auf die Ziel-URL auf, sondern rufen Sie sie direkt auf:

%Vor%     
Storn White 25.04.2013 16:13
quelle
0

Wonach versuchst du die Variable "range" zu übergeben? eine andere Sicht? Es gibt keinen Parameter, um es zu akzeptieren. Ich denke, dass Sie nach der reverse () Funktion suchen, aber es ist schwer zu sag es.

    
Tom 28.02.2012 20:23
quelle
0

Redirect übernimmt den Namen der Ansicht, an die umgeleitet werden soll, und alle Attribute, die an die andere Ansicht übergeben werden sollen. In Ihrem Fall hat anotherView nur zwei Parameter - Anfrage und Benutzername, aber in der Weiterleitung geben Sie weitere Informationen an.

Sie können versuchen, etwas wie:

%Vor%

Damit können Sie mehr Attribute an es übergeben.

Bearbeiten

Wie wäre es damit in der ursprünglichen Ansicht:

%Vor%     
miki725 28.02.2012 20:13
quelle

Tags und Links