无锡网站制作选哪家,做网站要学哪些代码,竞价交易规则,关键词搜索工具有哪些锋哥原创的Python Web开发 Django5视频教程#xff1a;
2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计25条视频#xff0c;包括#xff1a;2024版 Django5 Python we…锋哥原创的Python Web开发 Django5视频教程
2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计25条视频包括2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~、第2讲 Django5安装、第3讲 Django5创建项目(用命令方式)等UP主更多精彩视频请关注UP账号。https://www.bilibili.com/video/BV14Z421z78C/我们在urls.py里定义的路由信息有时候需要动态获取路由信息然后进行一些处理统计日志等操作这时候我们需要在其他代码里用到路由信息比如views.py后面要学到的模型models.pyAdmin系统等因此我们引入路由反向解析reverse与resolve方法再使用这两个方法前我们还需要给路由取名否则我们无法找到我们需要的那个路由的信息。reverse方法根据路由名称得到路由地址resolve方法根据路由地址得到路由所有信息。
我们先举一个简单例子来体会下吧。
在order项目的urls.py里我们对index/和list/请求路由分别取名index和list 然后修改views.py的index方法
def index(request):route_url reverse(order:index)print(reverse反向解析得到路由地址 route_url)result resolve(route_url)print(resolve通过路由地址得到路由信息 str(result))return HttpResponse(订单信息)
我们运行请求
http://127.0.0.1:8000/order/index/
控制台输出
reverse反向解析得到路由地址/order/index/
resolve通过路由地址得到路由信息ResolverMatch(funcorder.views.index, args(), kwargs{}, url_nameindex, app_names[order], namespaces[order], routeorder/index/)
resolve返回对象属性介绍
函数方法说明func路由的视图函数对象或视图类对象args以列表格式获取路由的变量信息kwargs以字典格式获取路由的变量信息url_name获取路由命名nameapp names与app name功能一致但以列表格式表示namespaces与namespace功能一致,但以列表格式表示route获取整个路由的名称包括命名空间
这里我们在修改下项目来讲下参数的运用。
order的urls.py的list请求加下年月日路由变量 path(list/int:year/int:month/int:day/, views.list, namelist)
对应的views.py的list方法我们也进行修改要加上三个路由变量
def list(request, year, month, day):kwargs {year: year - 1, month: month 1, day: day}args [year, month, day]# route_url reverse(order:list, argsargs)route_url reverse(order:list, kwargskwargs)print(reverse反向解析得到路由地址 route_url)result resolve(route_url)print(resolve通过路由地址得到路由信息 str(result))return HttpResponse(订单列表)
进行反向解析路由的时候我们也可以带上路由实参可以通过kwargs字典键值对也可以通过args元组 测试请求地址http://127.0.0.1:8000/order/list/2010/11/11/
控制台输出
reverse反向解析得到路由地址/order/list/2009/12/11/
resolve通过路由地址得到路由信息ResolverMatch(funcorder.views.list, args(), kwargs{year: 2009, month: 12, day: 11}, url_namelist, app_names[order], namespaces[order], routeorder/list/int:year/int:month/int:day/, captured_kwargs{year: 2009, month: 12, day: 11})
点开reverse方法 必须参数viewname以及一些可选参数 viewname:代表路由命名或可调用视图对象一般情况下是以路由命名name来生成路由地址的。 urlconf:设置反向解析的URLconf模块。默认情况下使用配置文件 settings.py 的ROOT_URLCONF属性( 主项目文件夹的urls.py ). args:以列表方式传递路由地址变量列表元素顺序和数量应与路由地址变量的顺序和数量一致。 kwargs:以字典方式传递路由地址变量字典的键必须对应路由地址变量名字典的键值对数量与变量的数量一致。 current app:提示当前正在执行的视图所在的项目应用主要起到提示作用在功能上并无实质的作用。 点开resolve方法 就两个参数 path:代表路由地址通过路由地址来获取对应的路由对象信息。 urlconf:设置反向解析的_URLconf模块。默认情况下使用配置文件 settings.py 的ROOT_URLCONF属性( 主项目文件夹的urls.py ).