Django url匹配在urls.py中不匹配规则
urls.py
urlpatterns = patterns('',
(r'^page/\w+/$', get_page),
(r'', main),
)
访问这个链接:http://localhost:8081/page/cricket
这个链接会调用main这个函数,而不是get_page这个函数
我该怎么做才能让它正常工作呢?
2 个回答
1
^page/\w+/$
是一个正则表达式,用来匹配以 page/
开头的字符串,后面跟着一个或多个字母,最后以 /
结尾,并且后面不能有其他字符。
page/cricket
包含了前面两个部分,但没有最后一个部分,所以它不符合这个规则。
3
这个正则表达式写得不对。它会匹配像 http://localhost:8081/page/cricket/ 或 http://localhost:8081/page/dog/ 这样的链接。但它不会匹配 http://localhost:8081/page/cricket,因为这个正则表达式要求链接最后必须有一个斜杠(/)。
根据你的评论和问题,你可能想要的是这样的:
(r'^page/(?P<loc>.*)', get_page)
这样的话,所有在 page/
后面的内容都会传递给名为 'loc' 的参数,去调用 get_page 函数。
如果你对这些特殊符号的意思感到困惑,可以参考 Python 的正则表达式参考文档。