URLconf
- 浏览者通过在浏览器的地址栏中输入网址请求网站
- 对于Django开发的网站,由哪一个视图进行处理请求,是由url匹配找到的
配置URLconf
1.
settings.py
中指定url配置
ROOT_URLCONF = '项目.urls'
2.项目中
urls.py
匹配成功后,包含到应用的
urls.py
url(正则, include('应用.urls'))
3.应用中
urls.py
匹配成功后,调用
views.py
对应的函数url(正则, views.函数名)
4.提示
1. 正则部分推荐使用 r,表示字符串不转义,这样在正则 表达式中使用 \ 只写一个就可以 2. 不能在开始加反斜杠,推荐在结束加反斜杠 正确:path/ 正确:path 错误:/path 错误:/path/ 3. 请求的url被看做是一个普通的python字符串,进行匹配时不包括域名、get或post参数 3.1 如请求地址如下: http://127.0.0.1:8000/18/?a=10 3.2 去掉域名和参数部分后,只剩下如下部分与正则匹配 18/
URL中取值
- 如果想从URL中获取值,需要在正则表达式中使用
分组
, - 获取值分为两种方式
- 位置参数
- 参数的位置不能错
- 关键字参数
- 参数的位置可以变,跟关键字保持一致即可
- 位置参数
- 注意:两种参数的方式不要混合使用,在一个正则表达式中只能使用一种参数方式
- 分别使用以上两种获取URL值的方式提取出
18
188
http://127.0.0.1:8000/18/188/
位置参数
应用中
urls.py
url(r'^(\d+)/(\d+)/$', views.index),
视图中函数: 参数的位置不能错
def index(request, value1, value2): # 构造上下文 context = {'v1':value1, 'v2':value2} return render(request, 'Book/index.html', context)
关键字参数
应用中
urls.py
- 其中
?P<value1>
部分表示为这个参数定义的名称为value1
可以是其它名称,起名要做到见名知意
url(r'^(?P<value1>\d+)/(?P<value2>\d+)/$', views.index),
- 其中
视图中函数: 参数的位置可以变,跟关键字保持一致即可
def index(request, value2, value1): # 构造上下文 context = {'v1':value1, 'v2':value2} return render(request, 'Book/index.html', context)