在这种情况下如何避免Django视图中的硬编码URL?

时间:2014-09-02 01:50:37

标签: python django

我知道我们通常会反转(someview)以避免在视图中使用硬编码的网址。

但在我的情况下:

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

def signin_owner(request):
    # stuff...

这不起作用,这会在任何URL处引发一个ImproperlyConfigured错误(消息是:包含的urlconf hellodjango.urls中没有任何模式)。

我不知道发生了什么,因为urls.py中的视图似乎已经很好地定义了(我在6个月内从未犯过这样的错误)。

root 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'),

谢谢!

1 个答案:

答案 0 :(得分:3)

在加载URLconf之前,您正在使用URL反转,因为reverse无效。解决方案是使用reverse_lazy代替。

现在您的观点将是这样的:

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