Django 路由系统
路由系统
1.URL模式以及要为该URL模式调用的视图函数之间的映射表,每个路由对应一个view中的函数,对于这个URL调用这段代码,对于那个URL调用那段代码
参数说明:
一个正则表达式字符串 一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串
可选的要传递给视图函数的默认参数(字典形式)
一个可选的name参数 传递的参数始终是字符串
2. include 分级路由
查找的顺序:请求 --> project/urls.py --> app/urls.py --> app/views.py
3. URL匹配规则的别名
1. 起别名是为了,增加代码的健壮性,不将URL硬编码到代码中!
2. 用法
1. 在views.py中如何根据别名找到 url
from django.urls import reverse
url = reverse('别名')
2. 在模板语言中如何根据别名找到url {% url '别名' %}
3. 带参数的url如何反向生成?
1. 位置参数
1. 在views.py中:
reverse("别名", args=(参数1, 参数2, ...))
2. 在模板语言中:
{% url "别名" 参数1, 参数2... %}
2. 关键字参数
1. 在views.py中:reverse("别名", kwargs={"k1":参数1, ...})
2. 在模板语言中:{% url "别名" 参数1, 参数2... %}
4. namespace(命名空间)
# 使用include语法,将其他的urls.py 包含进来
url(r'^app01/', include(app01_urls, namespace="app01"),),
url(r'^app02/', include(app02_urls, namespace="app02")),
1. 位置参数
1. 在views.py中:reverse("命名空间:别名", args=(参数1, 参数2, ...))
2. 在模板语言中:{% url "命名空间:别名" 参数1, 参数2... %}
2. 关键字参数
1. 在views.py中:reverse("命名空间:别名", kwargs={"k1":参数1, ...})
2. 在模板语言中:{% url "命名空间:别名" 参数1, 参数2... %}