2012-07-11 10 views
62
ImportError at/
No module named simple 

Django Version: 1.5.dev20120710212642 

Zainstalowałem najnowszą wersję django. W moim urls.py używam"Brak modułu o nazwie simple" error w Django

from django.views.generic.simple import redirect_to 

w moim urls.py. Co jest nie tak? Czy jest przestarzałe?

Odpowiedz

126

Użyj class-based views zamiast redirect_to, ponieważ te ogólne widoki oparte na funkcjach zostały uznane za przestarzałe.

Oto prosty przykład użycia klasy oparte poglądów

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")), 
) 

aktualizacji

Jeśli ktoś chce przekierować do adresu URL, użyj RedirectView.

from django.views.generic import RedirectView 

urlpatterns = patterns('', 
    (r'^one/$', RedirectView.as_view(url='/another/')), 
) 
+6

Dzięki za ten przykład. Po prostu zaktualizowaliśmy do wersji 1.5 i natychmiast dostaliśmy błędy zarówno z redirect_to, jak i direct_to_template. Rewizja. – commadelimited

5

Tak, stare widoki ogólne oparte na funkcjach zostały wycofane w wersji 1.4. Zamiast tego użyj widoków opartych na klasach.

+2

Co mogę użyć zamiast przekierowania? – Burak

+1

@Burak, a może RedirectView.as_view (url = '/ another-url /') jak wskazano powyżej? – Massagran

52

to powinno działać

from django.conf.urls import patterns 
from django.views.generic import RedirectView 

urlpatterns = patterns('', 
    url(r'some-url', RedirectView.as_view(url='/another-url/')) 
) 
+1

Dziękujemy za ten przykład. Po prostu zaktualizowaliśmy do wersji 1.5 i natychmiast dostaliśmy błędy zarówno z redirect_to, jak i direct_to_template. Rewizja. – commadelimited

+2

Dziękujemy! działa jak marzenie! Właściwie to jest poprawna odpowiedź na pytanie. Przyjęta odpowiedź nie zastępuje przekierowania. –

2

a dla zapisu (brak istotnych przykład Obecnie w dokumentacji), aby użyć RedirectView z parametrami:

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/')), 
) 

Należy pamiętać, że chociaż regex wygląd dla liczby (\d+) parametr jest przekazywany jako ciąg znaków (%(my_id)s).

Co jest nadal niejasne, to jak używać RedirectView z template_name w urls.py.

Powiązane problemy