07.URL调度器工作原理

1.工作原理

07.URL调度器工作原理_第1张图片
django通过urlconf来映射视图函数,只区分路径,不区分http方法

  • Django确定要使用的根URLconf模块,一般实在settings中的ROOT_URLCONF设置的值,但是如果传入HttpRequest对象具有一个urlconf属性(由中间件设置),则其值代替ROOT_RULCONF来设置
  • Django加载该URLconf模块并查找变量urlpatterns,它是一个列表django.url.path() 和 / 或django.urls.re_path()实例。
  • Django按顺序遍历每一个URL模式,并停在与URL匹配的第一个URL模式,需要特别注意编写的顺序
  • 一旦某个URL模式匹配,Django就会导入并调用给定的视图,该视图是一个简单的Python函数(或基于类的视图方法)。该视图通过以下参数传递:
    • 一个HttpRequest实例
    • 如果匹配的URL模式没有返回任何命名组,则来自正则表达式的匹配作为位置参数提供
    • 关键字参数由路径表达式匹配的任何命名部分组成,并由可选的kwargs参数传给django.url.path()或django.urls.re_path()
  • 如果没有url模式匹配,或者在此过程中的任何点发生异常,Django将调用适当的错误处理视图

2.简单示例

给子路由添加前缀
在子级中编写路由地址

from django.urls import path,include
from first_app import views

urlpatterns = [
    path('first_request/', views.my_first_request),
    path('login_request/', views.login_request)
]

在父级中添加前缀,include查找url

from django.contrib import admin
from django.urls import path,include
from first_app import views

urlpatterns = [
    path('admin/', admin.site.urls),
    # path('first_request/', views.my_first_request),
    # path('login_request/', views.login_request)
    path('first_app/',include('first_app.urls'))
]

07.URL调度器工作原理_第2张图片

你可能感兴趣的:(Python_Django框架,django,python,后端,web)