Django2.0-urls(5)-include(),re_path(),reverse()
程序员文章站
2022-06-06 08:44:02
...
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。
-
-
-
一般都使用第一种
include()
re_path
- 作用和
path()
一样。 -
re_path()
的第一个参数可以使用正则表达式 -
正则表达式推荐使用原生字符串,即
r"正则表达式"
- 在正则表达式中定义变量,需要使用圆括号括起来。
- 参数的定义:
?P<variable_name>
- 在后面添加正则表达式的规则
- 参数的定义:
- 类似Django1.8的
url()
函数
reverse
-
如果在翻转URL的时候,需要添加参数,可以在
reverse()
中传递kwargs
参数# 主urls.py app_name = "CMS" path('reverse/', include("CMS.urls")),
# 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
- 运行 键入
-
如果想要添加查询字符串的参数,则必须手动进行拼接