Django URL没有尾部斜杠时不重定向
我有两个应用程序,分别在两台不同的电脑上。在电脑A的 urls.py
文件里,有一行代码是这样的:
(r'^cast/$', 'mySite.simulate.views.cast')
这个网址可以同时访问 mySite.com/cast/
和 mySite.com/cast
。但是在电脑B上,我写了一个类似的网址:
(r'^login/$', 'mySite.myUser.views.login')
奇怪的是,在电脑B上,访问 mySite.com/login
/ 可以正常工作,但 mySite.com/login
却会卡住,无法像在电脑A上一样自动跳转到 mySite.com/login/
。我是不是漏掉了什么?这两台电脑的 urls.py
文件看起来一模一样。
9 个回答
23
这个内容是对@Michael Gendin的回答的改进。他的回答是用两个不同的网址来提供同样的页面。其实更好的做法是让login
自动跳转到login/
,然后把后者作为主要页面来提供:
from django.conf.urls import patterns
from django.views.generic import RedirectView
urlpatterns = patterns('',
# Redirect login to login/
(r'^login$', RedirectView.as_view(url = '/login/')),
# Handle the page with the slash.
(r'^login/', "views.my_handler"),
)
223
或者你可以这样写你的网址:
(r'^login/?$', 'mySite.myUser.views.login')
在最后的斜杠后面加个问号,这样在正则表达式中就表示这个斜杠是可选的。如果你有某些原因不想使用 APPEND_SLASH 这个设置,就可以用这种方式。
122
检查一下你在settings.py文件里的APPEND_SLASH
设置