我的urls.py是:
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^$', redirect('home')),
url(r"^home/$", 'my_project.views.user_login', name="home"),
#url(r'^/$', redirect('home')),
)
我想将http://127.0.0.1:8000
和http://127.0.0.1:8000/home
定向到同一视图进行处理。
我还有其他的urlpatterns,为简单起见我没有在上面提到。
目前,当我访问此http://127.0.0.1:8000/home/
时,它会引发以下错误:
ImproperlyConfigured at /home/
The included urlconf cmv_project.urls doesn't have any patterns in it
Request Method: GET
Request URL: http://127.0.0.1:8000/home/
Django Version: 1.6
Exception Type: ImproperlyConfigured
Exception Value:
The included urlconf cmv_project.urls doesn't have any patterns in it
当我评论出第二个urlpattern(url(r'^$', redirect('home')),
)时,它有效。
我试图将这个urlpattern切换到最后一个。但它仍然无济于事。拥有这种模式,在urls.py中打破其他Urlpatterns。我不知道为什么?
如何解决这个问题?
答案 0 :(得分:2)
尝试将第二个网址附加到与第三个网址相同的视图,使用类似的内容。
url(r"^$",my_project.views.user_login, name="home")
另一种方法是。
from django.core.urlresolvers import reverse_lazy
from django.views.generic import RedirectView
urlpatterns = patterns('',
url(r'^/$', RedirectView.as_view(url=reverse_lazy('home'))),
这有用吗?
答案 1 :(得分:0)
我认为它与this question类似。基本上,当您使用redirect
名称时,它将使用reverse
来查找它。见example 2 here。您需要使用reverse_lazy
代替。
要解决此问题,您可以执行以下操作:
redirect(reverse_lazy('home'))
或:
redirect('home/')
请注意,如果您执行第一个选项,则需要导入reverse_lazy
。如果你做了第二个选项,你就是硬编码的,这是不理想的。