Wie URL-Muster mit Variablen aus urls.py in Django umgeleitet werden?

8

Ich möchte URL-Muster mit Variablen von urls.py umleiten.

Ich verweise andere Stackoverflow-Lösung , aber ich weiß nicht, wann die URL eine Variable wie den folgenden Code hat.

%Vor%

Mit diesem Code leitet django /permalink/1/foo/ auf /permalink/(?P<id>\d+)/ um, nicht /permalink/1/ .

Gibt es eine Lösung ohne views.py zu verwenden?

Natürlich kenne ich die Lösung mit Controller, aber ich frage mich, ob es eine einfachere Lösung mit URL-Muster gibt.

    
Chemical Programmer 27.07.2015, 18:53
quelle

1 Antwort

11

Das Weitergeben von url='/permalink/(?P<id>\d+)/' an RedirectView funktioniert nicht, da die Ansicht die benannten Argumente in der URL nicht ersetzt.

Allerdings können Sie in RedirectView die pattern_name anstelle von url zum Weiterleiten an. Die URL wird mit den gleichen Argumenten und Kwargs umgekehrt, die für die ursprüngliche Ansicht übergeben wurden.

Dies wird in Ihrem Fall funktionieren, da beide URL-Muster ein benanntes Argument haben, id .

%Vor%

Wenn das Ziel-URL-Muster andere Argumente verwendet, können Sie url oder pattern_name nicht verwenden. Stattdessen können Sie RedirectView ableiten und get_redirect_url .

%Vor%

Es wäre empfehlenswert, QuerystringRedirect in Ihr Sichtenmodul zu schreiben. Sie würden dann die Ansicht zu Ihren URL-Mustern hinzufügen, etwa wie folgt:

%Vor%     
Alasdair 18.08.2015, 21:13
quelle