Django url匹配在urls.py中不匹配规则

1 投票
2 回答
3160 浏览
提问于 2025-04-17 08:19

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 的正则表达式参考文档

撰写回答