Excel不相邻列如何打印在一起-英雄云拓展知识分享
131
2023-11-07
【摘要】 本书摘自《Python+3自动化软件发布系统》一书中第2章,第6节,由陈刚、王洪军编著。
2.6 Django 路由 URL
笔者使用过很多不同语法的不同框架,如 spring、beego 、laravel 、express 、flask 等,每个语言和框架都有适合解决特定问题的优势。其中的 URL, 也是每个框架的 基本功能。但说到最优雅、最易维护和扩展,个中翘楚,还属 Django 的 URL。
在2.5节中,只介绍了Djagno 的 URL 最基础的功能,核心代码如下:
上面的代码,只涉及了 urlpatterns 和 path 关键字。现在就来系统介绍 URL 的 全部功能,可能有点早;但如果不在这里作一个全面的讲解,又担心知识太碎片化,读 者不好拼接所有的知识点,所以笔者只好在此先插入 URL 的内容。如果有的读者 一下子消化不了,也没有关系,只要跟上章节的学习进度,在后面需要用到 URL 的 知识时,可以再回到这里来加强学习。
Django 的 URL 功能,可以说是在 models 层、view 层、url 层,都实现统一形式, path 、include 、reverse 、resolve 、get_absolute__url 结合 namespace, 使我们在制作 URL 时,正向解析和反向解析都易如反掌,千变万化,又不失规范优雅。特别是在 Django 2.0 发布以后,简化了形式,且做到了向下兼容。下面就来慢慢了解这些 内容。
2.6.1 UrlConf 简介
URL 配置(UrlConf) 就像 Django 所支撑网站的目录。它的本质是URL 与要为 该 URL 调用的 view 函数之间的映射表;也就是告诉Django, 对于哪个 URL 调用哪 段代码。
Django 处理接收到 URL 的流程如下
① 首先确定使用的 UrlConf 模块,默认情况下使用的是 settings.py 中 ROOT_ URLCONF 对应的模块。如果接收到的 HttpRequest 经由 middleware 配置了 Url- Conf 属性,则就会使用该属性配置的模块。
② Django 在该模块中查找 Urlpatterns 变量,这个变量必须是 django.urls.path() 或者 django.urls.re_path() 实例的列表。
③ Django 按顺序匹配 Urlpatterns 中的模式,使用首先匹配到的模式。
④ 匹配到模式后,会执行该模式对应的视图函数,或者视图类,并把以下参数传 递过去:
● HttpRequest 实例。
●如果匹配到的模式没有返回 named group,则正则表达式返回的匹配内容就 会作为 positional arguments。
●路径表达式匹配到的 named part 作为 keyword arguments,会被 django. urls.path() 和 django.urls.re_path() 所指定的 kwargs 所覆盖。
⑤ 如果没有匹配到模式,或者处理过程中抛出了异常,则 Django 会调用处理异 常的视图。
2.6.2 UrlConf 的 Urlpatterns
urls.py 中默认就有 Urlpatterns, 可以把它看作一个存放了映射关系的列表。 Django 2.x 中常用的是 path() 方法,还可以使用re_path() 方法来兼容1.x 版本中 的 url() 方法。这里只讲述 path 方法的用法。
函数 path() 具有四个参数,其中有:两个必选参数 route 和 view, 两个可选参数 kwargs 和 name, 即路由和视图是必选参数。其与旧版本参数的主要区别就在于url() 是要写正则表达式(regex) 的,而 path() 是写的路由(route) 。 接下来主要看一下 path() 函数的四个参数含义。
1.route [必选参数]
route 是一个匹配 URL 的准则(类似正则表达式)。当 Django 响应一个请求 时,它会从 Urlpatterns 的第一项开始,按顺序依次匹配列表中的项,直到找到匹配 的项。
这些准则不会匹配 GET 和 POST 参数或域名。例如,UrlConf 在处理请求 ht- tps://localhost/bbs/2019/ 时,会尝试匹配上面第7行的路由;处理请求 https://lo- calhost/bbs/2019/?page=3 时,也只会尝试匹配第7行的路由。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~