Django基础篇-url路由配置

时间:2022-06-26
本文章向大家介绍Django基础篇-url路由配置,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

urls.py 路由用法

  • url 基本概念
  • url 格式
  • urls.py 的作用
  • include
  • kwarg
  • name

① URL 概念:

URL 统一资源定位符,可以从互联网上得到的资源的位置和访问方法的一种简洁的方式,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的 URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。

② URL 格式

http://127.0.0.1:8000/yuntuan/

URL 解释:

schema://host[:port#]/path/.../[?query-string][#anchor]

schema: 指定使用的协议(例如:http,https,ftp)

host: Http服务器的IP地址或者域名

port: 端口号,http默认是80端口

path: 访问资源的路径

query-string: 发送给http服务器的数据

anchor: 锚点

③ urls.py 的作用

URL 配置就像是 Dajngo 所支撑网站的目录。它的本质是 URL 模式以及要为该 URL 模式调用的视图函数之间的映射表。以这样的方式告诉 Django,对于哪个 URL 调用哪段代码。url 的加载就是从配置文件中开始。

url 解析过程

Django 会从 urlpatterns 里顺次读取元素,每个元素是方法 url 调用后返回的结果。

django 传给 url 路由要处理的地址,该地址是被去掉主机地址以及之后的一个"/"的剩余部分:

例如:http://127.0.0.1:8000/yuntuan/

经处理后的剩余部分就是:

yuntuan/

然后把该剩余部分与 url 方法的第一个参数进行正则匹配,如何匹配成功,则执行 url 的第二个参数指定的方法(该方法一般放在 views.py 中,主要功能的实现具体业务逻辑)

url 例子:

# blog/views.py

参数捕获:

1. 捕获位置参数(可变参数):在 url 函数中,第一个正则表达式使用()括号进行捕获参数。

2. 捕获关键字参数:在 url 函数中,第一个正则表达式使用(?P<keyword>)进行捕获。

注意事项:

参数类型是字符串类型,如果使用数字类型,需要使用 int 函数转换成 int 类型。

④include 的作用

方便项目管理:

一个 project 有一个总的 urls.py,各个 app 也可以建立 urls.py,不过都需要使用 include() 函数在 project 的 urls.py 文件进行注册。

主 url 文件

APP blog 里面的 url 文件

APP blog 里面的 view 文件

include注意事项:

到达 django 来的时候,已经有域名和反斜杠了,拿本机地址为例,已经有 http://127.0.0.1/ 这个样子了,所以主 url 中都不需要以 / 开头。

  • 子 url 在配置的时候,其实就是字符串的匹配,一层套一层的。
  • 主 url 匹配,开始的地方不需要加反斜杠。

原因是:因为 django 已经给域名后面加了一个正斜杠,所以不需要再加,否则将匹配不到正确的 url。

主 url 后面要加正斜杠;

app 的 url,前面不要加正斜杠;

主 url 后面不要加 $ 符号;

子 app 的 url,后面要加 $ 符号。

⑤ kwarg 的作用

传递一个 python 字典作为额外的参数给视图函数。django.conf.urls.url() 函数可以接收一个可选的第三参数,它是一个字典,表示想要传递给视图函数的额外关键字参数。

主 url 文件

APP blog 里面的 view 文件

URL 传递额外参数:

url 函数有一个参数叫做 kwargs,这个参数可以传递额外的参数到 views 中,并且必须为字典类型。在这使用 include 的时候,需要统一给下面的 url 一些参数的时候,显得尤其有用。

⑥ name 的作用

给一个匹配的 url 地址取名字

一般用于模板,也可以使用 reverse 进行页面重定向。

url 有一个 name 的参数,name 参数可以给这个 url 去一个合适的名字。通过给 url 取名字,以后在 view 或者模板中使用这个 url,就只需要通过这个名字就可以了。这样做的原因是防止 url 的规则更改,会导致其它地方用了这个 url 的地方都需要更改,但是如果取名字了,就不要做任何改动了。

⑦模板渲染方式

1.模板路径

2.渲染方式

settings.py 中模板路径配置:

  • 直接将 html 字符串硬编码 HttpResponse 中
  • django.template.loader 定义了函数用来加载模板

get_templatetemplate_nameusing = None

该函数使用给定的名称加载模板并返回一个 Template 对象 .get_template() 尝试获取每个模板直到有一个成功满足。

  • 使用 render 进行渲染