Wie verwende ich django.core.urlresolvers.reverse mit einer Funktionsreferenz anstelle eines benannten URL-Musters?

8

In meiner urls.py Datei habe ich:

%Vor%

Dabei ist categories eine Ansichtsfunktion in myapp/views.py . Keine anderen URLconf-Zeilen verweisen auf views.categories .

In einer Komponententestdatei versuche ich, diese URL mit django.core.urlresolvers.reverse() zu verwenden, anstatt nur '/ categories /' (DRY und all das) zu kopieren. Also, ich habe:

%Vor%

Wenn ich meine Tests starte, bekomme ich einen NoReverseMatch Fehler:

%Vor%

Es passt gut, wenn ich das URL-Muster wie folgt zu einem benannten Muster mache:

%Vor%

Und verwenden Sie den Musternamen, um es zu entsprechen:

%Vor%

Aber soweit ich das beurteilen kann, die reverse -Dokumentation , Ich sollte es nicht zu einem benannten URL-Muster machen müssen, nur um reverse zu verwenden.

Irgendwelche Ideen, was ich falsch mache?

    
Paul D. Waite 25.09.2008, 17:15
quelle

4 Antworten

2

Nach weiteren Untersuchungen stellte sich heraus, dass es ein Problem mit dem Importieren des Ansichtenmoduls war:

Wie kann ich erfolgreich bestehen? eine Funktionsreferenz auf die Funktion reverse () von Django?

Vielen Dank für die Hilfe, Leute: Sie haben mich inspiriert, es richtig anzusehen.

    
Paul D. Waite 28.09.2008, 19:56
quelle
2

Jack M.'s Beispiel ist fast korrekt.

Es muss eine URL-Funktion sein, kein Tupel, wenn Sie benannte URLs verwenden möchten.

%Vor%     
camflan 25.09.2008 22:55
quelle
0

Das funktioniert, und der gesamte Code, den Sie eingefügt haben, ist korrekt und funktioniert einwandfrei (ich habe ihn einfach in eine saubere Test- / Projekt-App kopiert und die URL ohne Probleme umgekehrt). Es gibt also etwas anderes hier, das du uns nicht gezeigt hast. Vereinfachen Sie die grundlegenden Grundlagen, bis es funktioniert, und fügen Sie anschließend die Komplexität wieder hinzu und sehen Sie, wo sie bricht.

Sie können auch "./manage.py shell" ausführen und dann die Umkehrfunktion und Ihre Ansichtsfunktion interaktiv importieren und den umgekehrten Vorgang ausführen. Das wird die Testkonfiguration als mögliche Ursache entfernen.

    
Carl Meyer 25.09.2008 20:39
quelle
-1

Die Umkehrfunktion verwendet tatsächlich den "Namen" der URL. Dies ist wie folgt definiert:

%Vor%

Nun würden Sie mit der Zeichenfolge "no-monkeys" den umgekehrten Fall aufrufen, um die richtige URL zu erhalten.

Ninja Bearbeiten: Hier ist ein Link zu den Django-Dokumenten zu diesem Thema .

    
Jack M. 25.09.2008 17:18
quelle

Tags und Links