Django之路由层 Django之路由层是Django框架中的一部分,主要负责将URL请求映射到对应的视图函数上。这个层次结构类似于文件系统的目录结构,用于组织和管理项目中的URL请求。 一、简单的路由配置 Django之路由层的核心是URL配置(URLconf),它是一个映射表,将URL与对应的视图函数之间建立映射关系。下面是一个简单的路由配置示例: ``` from django.urls import path, re_path from app01 import views urlpatterns = [ re_path(r'^articles/2003/$', views.special_case_2003), re_path(r'^articles/([0-9]{4})/$', views.year_archive), re_path(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive), re_path(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail), ] ``` 在这个示例中,我们使用`re_path`函数来定义路由规则。`re_path`函数的第一个参数是正则表达式,用于匹配URL请求。第二个参数是对应的视图函数,用于处理请求。 例如,第一个路由规则`re_path(r'^articles/2003/$', views.special_case_2003)`将URL `/articles/2003/`映射到`views.special_case_2003`视图函数上。 二、有名分组 在上面的示例中,我们使用了简单的、没有命名的正则表达式来捕获URL中的值并以位置参数传递给视图函数。但是,在更高级的用法中,可以使用命名的正则表达式组来捕获URL中的值并以关键字参数传递给视图函数。 在Python正则表达式中,命名正则表达式组的语法是`(?P<name>pattern)`,其中`name`是组的名称,`pattern`是要匹配的模式。下面是以上URLconf使用命名组的重写: ``` from django.urls import path, re_path from app01 import views urlpatterns = [ re_path(r'^articles/2003/$', views.special_case_2003), re_path(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive), re_path(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', views.month_archive), re_path(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2})/$', views.article_detail), ] ``` 这个实现与前面的示例完全相同,只有一个细微的差别:捕获的值作为关键字参数而不是位置参数传递给视图函数。 例如, `/articles/2005/03/` 请求将调用`views.month_archive(request, year='2005', month='03')`函数,而不是`views.month_archive(request, '2005', '03')`。 三、分发 在Django之路由层中,还可以使用`include`函数来将其他URLconf模块包含到当前URLconf中。这可以将URLconf模块组织成树形结构,使得项目中的URL请求变得更加有条理。 例如: ``` from django.urls import include urlpatterns = [ path('articles/', include('articles.urls')), ] ``` 这个示例中,我们使用`include`函数将`articles.urls`模块包含到当前URLconf中。这样,我们就可以在`articles.urls`模块中定义更多的路由规则。
- 粉丝: 7
- 资源: 919
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助