2012-07-11 124 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