举例 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://bianchenghao.cn/37198.html