include
include()函数有三种方式形式:
include(module, namespace=None)
- module:子URL的模块字符串
- namespace:实例命名空间。继续注意需要指定应用命名空间,就是在子
urls.py
中添加app_name
变量
include ((pattern_list, app_namesapce), namespace=None)
- pattern_list: 一个元组:
(另外一个'urls.py', 应用命名空间)
- namespace: 命名空间
- 即应用命名空间既可以在子
urls.py
中,也可以在include
函数指定
- pattern_list: 一个元组:
include (pattern_list)
- pattern_list: 是一个
list
,装的是path()
或者re_path
代码
urlpatterns = [
path (r"index/", include(
path("", views.index_page),
path("02/", views.index_02),
))
]
可以不同在子urls.py
中指定子URL。
- pattern_list: 是一个
- 一般都使用第一种
include()
re_path
- 作用和
path()
一样。 re_path()
的第一个参数可以使用正则表达式- 正则表达式推荐使用原生字符串,即
r"正则表达式"
- 在正则表达式中定义变量,需要使用圆括号括起来。
- 参数的定义:
?P<variable_name>
- 在后面添加正则表达式的规则
- 参数的定义:
- 类似Django1.8的
url()
函数
reverse
path(‘reverse/‘, include(“CMS.urls”)),
```python
# app的urls.py
path('index', views.do_index),
path('index/<name>/<age>', views.do_param, name="withName"),
# views.py
def do_index(request):
return redirect(reverse("CMS:withName", kwargs={"name": "jack", "age": 22}))
# 注意!reverse参数的name如果在创建前有定义应用命名空间,就需要 应用命名:url_name 的格式
def do_param(request, name, age):
return HttpResponse("param name is {}, age is {}".format(name, age))
- 运行 键入
127.0.0.0.1:8000/index
则跳转127.0.0.0.1:8000/index/jack/22
- 如果想要添加查询字符串的参数,则必须手动进行拼接