urls.py 路由用法
① 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 中都不需要以 / 开头。
原因是:因为 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 中模板路径配置:
get_template
(template_name,using = None)
该函数使用给定的名称加载模板并返回一个 Template 对象 .get_template() 尝试获取每个模板直到有一个成功满足。