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

Django Version: 1.5.dev20120710212642 

我安装了最新的django版本。我正在使用Django中的“No module named simple”错误

from django.views.generic.simple import redirect_to 

在我的urls.py中。哪里不对?它是否被弃用?

回答

126

使用class-based views而不是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/')), 
) 
+6

感谢这个例子。我们刚刚升级到1.5,并立即通过redirect_to和direct_to_template获得错误。 Upvoted。 – commadelimited 2013-02-27 14:48:14

5

是的,旧的基于函数的通用视图在1.4中已被弃用。改为使用基于类的视图。

+2

我可以使用什么来代替redirect_to? – Burak 2012-07-11 08:33:35

+1

@Burak,如上所述,RedirectView.as_view(url ='/ another-url /')如何? – Massagran 2013-06-01 07:27:12

52

这应该工作

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

感谢这个例子。我们刚刚升级到1.5,并立即通过redirect_to和direct_to_template获得错误。 Upvoted。 – commadelimited 2013-02-27 14:47:40

+2

谢谢!奇迹般有效!其实这是对这个问题的正确答案。接受的答案不是redirect_to的替代品。 – 2013-03-27 06:50:54

2

并记录在案(目前在文档中没有相关的例子),使用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)。

目前尚不清楚如何使用RedirectViewtemplate_nameurls.py