“Geen module met de naam eenvoudig” fout in Django

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_toomdat 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 RedirectViewte gebruiken met template_namein urls.py.

Other episodes