ImportError at /
No module named simple

Django Version: 1.5.dev20120710212642

I installed latest django version. I am using

from django.views.generic.simple import redirect_to

in my urls.py. What is wrong? Is it deprecated?

score:136

Accepted answer

Use class-based views instead of redirect_to as these function-based generic views have been deprecated.

Here is simple example of class-based views usage

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

Update

If someone wants to redirect to a URL, Use RedirectView.

from django.views.generic import RedirectView

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

Similar question

score:5

And for the record (no relevant example currently in documentation), to use RedirectView with 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/')),
)

Please note that although the regex looks for a number (\d+), the parameter is passed as a string (%(my_id)s).

What is still unclear is how to use RedirectView with template_name in urls.py.

score:6

Yes, the old function-based generic views were deprecated in 1.4. Use the class-based views instead.

score:53

this should work

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

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