从别的地方找来的一张图:

还有一些需要补充的地方:
1、路由的概念
- 维护视图视图函数映射关系的结构,在Web框架中,称之为路由
- Django把这种映射关系叫做URLConf(URL配置),URL配置把URL映射到相应的视图函数中,我们以这种方式告诉Django,“访问这个URL时调用这些代码,访问那个URL时调用那些代码”
2、正向路由
通过url地址,查找到视图函数,从而响应给浏览器
1)正则

2)截取url地址中的信息
#在匹配过程中,使用()可以将匹配信息传递到视图函数,要求定义视图函数的时候,将参数定义好
urlpatterns = [
#映射关系
re_path('r^detail/(\d+)/$',视图函数,name='标识1') #\d+标识可以是一个或者多个数字
]
位置参数有时候并不能很好的描述用户意图,所以Django也提供在匹配URL时对截取信息进行命名参数的传递,采用的方法就是用 ?P<名称> 符号来进行名称命名
P-----Param(参数)
re_path(r'^book/(?P<book_id>\d+)/$',book_views.detail)
'''
名称必须和函数形参一致
'''
#对比一下
urlpatterns = [
#位置参数
re_path('r^detail/(\d+)/$',视图函数,name='标识1')
#命名参数
re_path(r'^detail/(?P<id>\d+)/$',视图函数,name='标识1'),
]
3、反向路由
- 在python的代码中,视图函数中如何得到url
- reverse(“路由匹配的标识”,args=[])
命名空间,多个应用下的views.py中都可能定义了一个index视图函数。
主路由与子路由之间
主路由:
#主路由和子路由之间才有命名空间
#命名空间在反向路由时采用,正向路由无影响(多个应用下的views.py中都可能定义了一个index视图函数)
urlpatterns = [
re_path(r'^book/$',include("book.urls",namespace="命名空间"))
]
子路由:
urlpatterns = [
re_path(r'^detail/(?P<id>\d+)/$',detail,name = 'detail')
]
reverse("命名空间:detail",args=(1111,))
本文详细介绍了Django框架中的路由概念,包括正向路由和反向路由的使用方法,以及如何利用命名空间处理多个应用下相同视图函数的情况。通过实例讲解了正则表达式在URL映射中的应用,以及如何通过位置参数和命名参数传递信息。
3414

被折叠的 条评论
为什么被折叠?



