2014-09-02 74 views
1

我知道我們通常會反轉(someview)以避免視圖中的硬編碼網址。如何在這種情況下避免Django視圖中的硬編碼url?

但在我的情況:

@user_passes_test(is_logged_owner, login_url=reverse(signin_owner)) 
def view_1(request): 
    # stuff... 

def signin_owner(request): 
    # stuff... 

這是不行的,這將引發ImproperlyConfigured錯誤在任何URL(消息是:所包含的URLconf hellodjango.urls沒有在任何模式)。

我不知道發生了什麼,因爲意見似乎在urls.py中很好定義(並且我在6個月內從未有過這樣的錯誤)。

根urls.py:

urlpatterns = patterns('', 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^', include('myapp.urls')), 
) 

MYAPP urls.py(一部分):

url(r'^signin_owner$', views.signin_owner, name='signin_owner'), 

謝謝!

+0

您的項目名稱是'hellodjango'? – levi 2014-09-02 02:03:39

+0

是的。爲什麼? :) – 2014-09-02 02:07:58

+0

哦,我想你複製了示例django項目,並忘記更改名稱。你可以粘貼你的'urls.py'嗎?並在哪裏定義你的'view_2' – levi 2014-09-02 02:09:49

回答

3

在加載URLconf之前,您正在使用URL反轉,因爲其中reverse不起作用。解決方案是使用reverse_lazy代替。

現在你的看法會是這樣的:

@user_passes_test(is_logged_owner, login_url=reverse_lazy('signin_owner',)) 
def view_1(request): 
    # stuff... 
+0

優秀!!!就是這樣,謝謝。我不知道它可能需要在裝飾器裏面的網址。 – 2014-09-02 10:00:14

相關問題