Django框架中的URL分发采用正则表达式匹配来进行,以下是正则表达式的基本规则:
符号 | 匹配 |
---|---|
. (dot) | 任意单一字符 |
\d | 任意一位数字 |
[A-Z] | A 到 Z中任意一个字符(大写) |
[a-z] | a 到 z中任意一个字符(小写) |
[A-Za-z] | a 到 z中任意一个字符(不区分大小写) |
+ | 匹配一个或更多 (例如, \d+ 匹配一个或 多个数字字符) |
[^/]+ | 一个或多个不为‘/’的字符 |
* | 零个或一个之前的表达式(例如:\d? 匹配零个或一个数字) |
* | 匹配0个或更多 (例如, \d* 匹配0个 或更多数字字符) |
{1,3} | 介于一个和三个(包含)之前的表达式(例如,\d{1,3}匹配一个或两个或三个数字) |
元字符 | 含义描述 |
* | 匹配O次、1次或多次其前的原子 |
+ | 匹配1次或多次其前的原子 |
? | 匹配0次或1次其前的原子 |
. | 匹配除了换行符外的任意一个字符 |
| | 匹配两个或多个分支选择 |
{n} | 表示其前面的原子恰好出现n次 |
{n,} | 表示其前面的原子出现不少于n次 |
{n,m} | 表示其前面的原子至少出现n次,最多出现m次 |
^或\A | 匹配输入字符串的幵始位置 (或在多行模式下行的幵头,即紧随一换行符之后) |
$或\Z | 匹配输入字符串的结束位置 (或在多行模式下行的结尾,即紧随一换行符之前) |
\b | 匹配单词的边界 |
\B | 匹配除单词边界以外的部分 |
[] | 匹配方括号中指定的任意一个原子 |
[^] | 匹配除方括兮中的原子以外的任意一个字符 |
() | 匹配其整体为一个原子,即模式单元,可以理解为由多个单个原子组成的大原子 |
官方演示代码:
from django.conf.urls import url from . import views urlpatterns = [ url(r'^articles/2003/$',views.special_case_2003), url(r'^articles/([0-9]{4})/$',views.year_archive), url(r'^articles/([0-9]{4})/([0-9]{2})/$',views.month_archive), url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$',views.article_detail), ] |
注意:
- 不需要在前面加上‘/’(slash),举个栗子,要写成’^articles’, 而不是’ ^/articles’。
- 在之前的’r’字母告诉Pyhton解释器这个String是一个“raw”— 原始字符串
原创文章,作者:cy,如若转载,请注明出处:https://www.cygzs.net/