Verwenden von reverse () in Django-Formularen

8

Ich versuche, die reverse () Funktion von django in der Definition von zu verwenden Django-Formular für mein benutzerdefiniertes Widget, aber bekomme einen Fehler:

%Vor%

Hier ist der Code:

%Vor%

Ich bin mir ziemlich sicher, dass meine 'works.urls' richtig konfiguriert ist, da alle anderen Seiten wie erwartet funktionieren.

Gibt es einen Grund, warum ich reverse() nicht in der Formulardefinition verwenden kann? Hat es etwas zu tun, wenn dieser Code ausgeführt wird? Gibt es eine Möglichkeit, dies zu beheben, oder die einzige Möglichkeit hier ist, die URL fest zu codieren?

Hier ist ein vollständiger Fehlerspeicher:

%Vor%     
Silver Light 15.09.2011, 12:05
quelle

1 Antwort

11

Das Problem könnte sein, dass das Formular definiert ist, bevor die URLs geladen wurden.

Django 1.4 wird eine reverse_lazy Funktion haben, die das Problem lösen würde dieses Problem. Sie können es selbst in Ihrem Projekt implementieren (siehe changeset 16121 ).

Alternativ können Sie das Widget auch in der Forms __init__ -Methode festlegen. Dann geschieht der umgekehrte Aufruf, wenn das Formular erstellt wird, nachdem die URLs geladen wurden.

%Vor%     
Alasdair 15.09.2011, 12:36
quelle

Tags und Links