URLpattern匹配规则

URLpattern匹配规则举例 urls py urlpatterns Examples url r PRSystem views home name home url r blog include blog urls url r admin include admin site urls url r

举例 urls.py

urlpatterns = [ # Examples: # url(r'^$', 'PRSystem.views.home', name='home'), # url(r'^blog/', include('blog.urls')), url(r'^admin/', include(admin.site.urls)), url(r'^hello/$',hello), ]

简单来说,我们只是告诉 Django,所有指向 URL /hello/ 的请求都应由 hello 这个视图函数来处理。
Django在检查URL模式前,移除每一个申请的URL开头的斜杠(/)。 这意味着我们为/hello/URL模式不用包含斜杠(/)
模式包含了一个尖号(^)和一个美元符号($)。这些都是正则表达式符号,并且有特定的含义: 上箭头要求表达式对字符串的头部进行匹配美元符号则要求表达式对字符串的尾部进行匹配
最好还是用范例来说明一下这个概念。 如果我们用尾部不是$的模式'^hello/',那么任何以/hello/开头的URL将会匹配,例如:/hello/foo/hello/bar,而不仅仅是/hello/。类似地,如果我们忽略了尖号(^),即'hello/$',那么任何以hello/结尾的URL将会匹配,例如:/foo/bar/hello/。如果我们简单使用hello/,即没有^开头和$结尾,那么任何包含hello/URL将会匹配,如:/foo/hello/bar。因此,我们使用这两个符号以确保只有/hello/匹配,不多也不少。
大多数的URL模式会以^开始、以$结束,但是拥有复杂匹配的灵活性会更好。
你可能会问:如果有人申请访问/hello(尾部没有斜杠/)会怎样。 因为我们的URL模式要求尾部有一个斜杠(/),那个申请URL将不匹配。 然而,默认地,任何不匹配或尾部没有斜杠(/)的申请URL,将被重定向至尾部包含斜杠的相同字眼的URL。 这是受配置文件setting中APPEND_SLASH项控制的)
如果你是喜欢所有URL都以'/'结尾的人(Django开发者的偏爱),那么你只需要在每个URL后添加斜杠,并且设置'APPEND_SLASH''True'. 如果不喜欢URL以斜杠结尾或者根据每个URL来决定,那么需要设置'APPEND_SLASH''False',并且根据你自己的意愿来添加结尾斜杠/URL模式后.












正则表达式

正则表达式 (或 regexes ) 是通用的文本模式匹配的方法。 Django URLconfs 允许 使用任意的正则表达式来做强有力的URL映射,不过通常实际上可能只需要使用很少的一 部分功能。 这里是一些基本的语法。
正则
有关正则表达式的更多内容,请访问 http://www.djangoproject.com/r/python/re-module/.




Url前面的‘r’含义

正则表达式字符串的开头字母“r”。 它告诉Python这是个原始字符串,不需要处理里面的反斜杠(转义字符)。 在普通Python字符串中,反斜杠用于特殊字符的转义。比如n转义成一个换行符。 当你用r把它标示为一个原始字符串后,Python不再视其中的反斜杠为转义字符。也就是说,“n”是两个字符串:“ ”“n”。由于反斜杠在Python代码和正则表达式中有冲突,因此建议你在Python定义正则表达式时都使用原始字符串。 从现在开始,本文所有URL模式都用原始字符串。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/202404.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午7:13
下一篇 2026年3月20日 上午7:13


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号