Ошибка "Нет модуля с именем simple" в Django

ImportError at /
No module named simple

Django Version: 1.5.dev20120710212642

Я установил последнюю версию django. Я использую

from django.views.generic.simple import redirect_to

в моем urls.py. Что не так? Это устарело?

Ответ 1

Используйте представления класса вместо redirect_to, поскольку эти основанные на функции общие представления устарели.

Вот простой пример использования видов на основе классов

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

Обновление

Если кто-то хочет перенаправить URL-адрес, используйте RedirectView.

from django.views.generic import RedirectView

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

Ответ 2

это должно работать

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

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

Ответ 3

Да, старые стандартные представления на основе функций были устаревшими в 1.4. Вместо этого используйте представления класса.

Ответ 4

И для записи (без соответствующего примера в настоящее время в документации) использовать RedirectView с параметрами:

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

Обратите внимание, что хотя регулярное выражение ищет число (\d+), параметр передается как строка (%(my_id)s).

Что еще неясно, как использовать RedirectView с template_name в urls.py.