Django 一文看懂urls.py与views.py的联系
URL路由的机制
1 Django的URL路由配置
- 路由是关联URL及其处理函数关系的过程。
创建的settings.py
中通过ROOT_URLCONF
变量指定全局路由文件名称,一般路由名称与工程名称相同。 - Django使用
urlpatterns
变量名来添加路由,改变量是列表类型,一般有path
和re_path
组成。
2 Django的URL路由流程
注意:Django的路由不考虑HTTP请求方式,仅根据URL进行路由,即只要路由路径相同,无论POST、GET等哪种请求方式都指向同一个操作函数。
3 path(route, view, kwargs=None, name)
- url:表示url或者url模式,Django定义的url转换语法
- view:处理(视图)函数的名称,包含include函数
- kwargs:关键字参数,向处理函数提供额外的参数,以字典的形式表示
- name:给path确定一个具体的名字
3.1 route的url格式转换
类型 | 说明 | 示例 |
---|---|---|
精确字符串格式 | 常规的路径结构。 | dir1/dir2 |
Django转换格式 | 通过不同参数控制路径,可以将路径保存。 | dir1/<str:name> |
正则表达式 | 通过正则表达式控制路径。 | dir1/(?P<dir>[0-9]{1} |
1) 精确字符串格式
- 适合静态单一的路径;
- 一个url匹配一个路径;
- url不用以/开头,但是要用/结尾;
2) Django转换格式
- 一个url模板,匹配一批url的同时,能够获得一批变量名作为参数。
- 常用形式,目的是通过url进行参数传递和获取。
- 采用<类型:变量名>的形式获取参数。
3)正则表达式
使用re_path函数,两种具体形式:
- 简单的(pattern),不提取参数:
path/([0-9]{4})/
- 命名模式的(pattern),提取参数,统一为str类型:
path/?P<name>[0-9]{4}
3.2 view的使用
- 处理函数:
views.py
处理函数,是url 的最终归宿。
2)include处理函数:include(other.urls)
包含其他文件的url路径。有两重作用:
① 附加本地路由。
② 路径去重。
为了避免系统找不到url,可以进行如下设置:
urlpatterns = [
path('',<根目录路径>)
re_path('^$',<跟目录路径>)
# 二选一即可