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.
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
.
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
.
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:
Tags und Links python django django-urls url-redirection