tips:
简单的一个应用程序是一般能通过一级路由实现,即用户访问某个地址,django根据地址返回对应的视图或提示。
但是当系统变大变复杂后,一个项目下可能有多个应用,每个应用的访问的开始路径不一样,这个时候就需要引入“路由分发”的概念,通过路由分发完成路由分级的功能。
本文主要讲:
- 路由分发
- 识别静态文件
项目实战
我们规划,测试工具管理平台分为两个应用:
一个应用处理自定义的测试管理工具(例如:测试计划、测试用例、仙姑、环境等)----访问地址均已“api/”开头
一个应用对接jira,同步jira的缺陷----访问地址均已“jira”开头
其他静态资源文件(不发起接口请求时展示的页面)
路由分发技术
使用include()函数实现路由分发
实现路由分发的过程:
1.在项目的urls.py文件内配置一级路由
1.1从对应的应用程序中导入urls文件
1.2配置path,一级路由地址+include(返回二级路由文件)
1.3非urlpatterns内path配置好的路径,则默认访问静态文件
from jiraAPP import urls as jira_urls
from ordercentry import urls as api_urls
urlpatterns = [
path('admin/', admin.site.urls),
path('api/',include(api_urls)),
path('jira/',include(jira_urls)) #访问jira/时分发到app程序对应下的urls.py文件
]+static('/',document_root='html')
#如果用户访问的路径不是以api或jira或admin开头的,就引用static静态文件路径
#静态文件的根目录路径通过document_root字段配置
2.在对应的程序app内新建urls.py,用于配置二级路由
urlpatterns=[
path('sync/bug/',sync_bug), #二级路由
path('list/bug/',list_bug),
]
用户访问过程
- 用户访问地址:http://xxx/jira/list/bug/buglist.html
- django先查第一级路由:/jira,判断第一级路由是jira后,就转发给jiraAPP应用程序下的urls.py
- django再在第二级路由内查找,判断二级路由是list/bug/,则返回其对应的视图list_bug