• 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)
    ]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在父级中添加前缀,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'))
    ]
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述

  • 相关阅读:
    uniapp uni.getLocation:fail 频繁调用会增加电量损耗
    Python启动Windows cmd(.bat)命令行并kill进程
    从抽象类和普通类的区别中体会设计模式
    剑指offer 08. 用两个栈实现队列
    MyCat安装文档
    [附源码]计算机毕业设计JAVAjsp远程学习系统
    ubuntu20.04搭建QGC4.2编译环境
    Mybatis plus中的逻辑删除源码跟踪
    Revit SDK:StairsAutomation
    es6新增-set数据结构
  • 原文地址:https://blog.csdn.net/m0_63953077/article/details/127888330