django url正则表达式在URL中重复

时间:2015-01-17 16:32:00

标签: django url

如果我创建网址

urlpatterns = patterns('',     
     url(r'^admin/', include(admin.site.urls)),
     url(r'^about/',views.about , name = 'about'),
     url(r'^rango/',views.index, name = 'index'),
)

链接127.0.0.1:8000/about127.0.0.1:8000/about/about/会引导您转到同一页面吗?我怎么阻止它?我只想要

domain-name/about/  

有效且任何内容(/about/about/about/...)都应该是无效页面。

2 个答案:

答案 0 :(得分:2)

将$添加到最后

  

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

答案 1 :(得分:0)

更一般地说,about/anything/也会匹配。 $表示字符串的结尾(或者在本例中为url),就像^表示字符串的开头一样。检查r'^about/'仅检查网址是以about/开头,而不是结束的位置。

这通常是您在包含其他网址配置时所需的行为,例如admin/。在这种情况下,模式不应该在admin/之后结束,但是应该有另一部分与包含文件中的已配置URL匹配。但是,如果您的模式是单个视图,您通常希望网址在模式结束后结束,即包含$时的网址,例如r'^about/$'