Django路由和视图

本文详细介绍了Django框架中的路由概念,包括正向路由和反向路由的使用方法,以及如何利用命名空间处理多个应用下相同视图函数的情况。通过实例讲解了正则表达式在URL映射中的应用,以及如何通过位置参数和命名参数传递信息。
摘要由CSDN通过智能技术生成

从别的地方找来的一张图:
在这里插入图片描述
还有一些需要补充的地方:

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,))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值