2012-04-17 51 views
2

在django 1.4中有一些奇怪的東西與URL反轉代碼一起使用。Django:爲什麼我可以在模板中反轉URL但不在視圖中?

我有一個叫做settings.views.app_view的視圖。我通過手動輸入網址查看了該頁面,以驗證基本網址格式是否正常。

url(r'^app/$', 'settings.views.app_view', name='settings_app_view'), 

我已經在模板中反轉了網址,它起作用。

{% url settings_app_view %} 

因此,URL模式起作用,我可以調用get模板中的URL,單擊鏈接並查看正確的頁面。

那麼,爲什麼我不能使用reverse()在視圖中獲取URL?所有的代碼顯然都存在,不僅如此,它顯式配置和正確工作,因爲我已經看到了該頁面並在模板中反轉了URL。

我必須錯過一些小東西;有誰知道它是什麼?

ViewDoesNotExist at /settings/app/ 
Exception Value: Could not import settings.views.app_view. View does not exist in module settings.views. 

# The highlighted code 
url = reverse("settings_app_view") 

回答

3

在你的代碼中,reverse()是否被執行?如果在導入python文件的過程中執行reverse(),則可以獲得遞歸導入。不幸的是遞歸的進口可以有不同的結果:AttributeError的可以上應該有這個屬性模塊發生....

參見:https://docs.djangoproject.com/en/dev/ref/urlresolvers/#reverse-lazy

+0

是的,你是完全徹底糾正。我在視圖定義之外放置了reverse(),因爲它僅僅是一些視圖的填充。在定義中移動它清除了所有內容。 |我會閱讀「懶惰反向Django」,謝謝。 – OpCodeOmega 2012-04-17 13:49:48

相關問題