Ik heb de nieuwste django-versie geïnstalleerd. Ik gebruik
from django.views.generic.simple import redirect_to
in mijn urls.py. Wat is er mis? Is het verouderd?
Antwoord 1, autoriteit 100%
Gebruik op klassen gebaseerde weergaven in plaats van redirect_to
omdat deze op functies gebaseerde generieke weergaven zijn verouderd.
Hier is een eenvoudig voorbeeld van het gebruik van op klassen gebaseerde weergaven
from django.conf.urls import patterns, url, include
from django.views.generic import TemplateView
urlpatterns = patterns('',
(r'^about/', TemplateView.as_view(template_name="about.html")),
)
Bijwerken
Als iemand wil omleiden naar een URL, gebruik dan RedirectView.
from django.views.generic import RedirectView
urlpatterns = patterns('',
(r'^one/$', RedirectView.as_view(url='/another/')),
)
Antwoord 2, autoriteit 39%
dit zou moeten werken
from django.conf.urls import patterns
from django.views.generic import RedirectView
urlpatterns = patterns('',
url(r'some-url', RedirectView.as_view(url='/another-url/'))
)
Antwoord 3, autoriteit 4%
Ja, de oude, op functies gebaseerde generieke weergaven zijn in 1.4 afgeschaft. Gebruik in plaats daarvan de op klassen gebaseerde weergaven.
Antwoord 4, autoriteit 4%
En voor de goede orde (momenteel geen relevant voorbeeld in de documentatie), om RedirectViewmet parameters:
from django.conf.urls import patterns, url
from django.views.generic import RedirectView
urlpatterns = patterns('',
url(r'^myurl/(?P<my_id>\d+)$', RedirectView.as_view(url='/another_url/%(my_id)s/')),
)
Houd er rekening mee dat hoewel de regex naar een getal zoekt (\d+
), de parameter wordt doorgegeven als een tekenreeks (%(my_id)s
).
Wat nog onduidelijk is, is hoe RedirectView
te gebruiken met template_name
in urls.py
.