首页 > 其他分享 >django框架(3)

django框架(3)

时间:2022-12-13 20:58:31浏览次数:57  
标签:匹配 框架 views django re test path 路由

今日内容概要

  • django请求生命周期流程图
  • django路由层
  • 反向解析

今日内容详细

django请求生命周期流程图

学习流程
	路由层、视图层、模板层、模型层、组件、BBS项目

django路由层

1.路由匹配
	django2.X及以上版本 path第一个参数写什么就匹配什么
	django1.X版本第一个参数是正则表达式
	无论什么版本的django都自带加斜杠后缀的功能 也可以取消
	配置文件中 APPEND_SLASH = False

2.转换器
	正常情况下很多网站都会有很多相似的网址 如果我们每一个都单独开设路由不合理
	django2.X及以上版本路由的动态匹配是通过转换器(五种)
		str:匹配除路径分隔符以外的任何非空字符串
		int:匹配0或者任意正整数
		slug:匹配任意一个由字母或数字组成的字符串
		uuid:匹配格式化后的UUID
		path:能够匹配完整的URL路径
		ps:还支持自定义转换器(自己写正则表达式匹配更加细化的内容)
	转换器就是将对应位置匹配到的数据转换成固定的数据类型
	path('index/<str:info>/', views.index_func)
	# 视图层中index_func实际收到的参数如下
	# index_func(实参request对象, info='转换器匹配到的类型转换后的内容')
	path('index/<str:info>/<int:id>/', views.index_func2)
	# index_func2(实参对象request, info='转换器匹配到的类型转换后的内容'info='转换器匹配到的类型转换后的内容', id='转换器匹配到的类型转换之后的内容')

3.正则匹配
	django2.X及以上的版本有re_path 第一个参数是正则表达式
	匹配的本质是只要第一个正则表达式能够从用户输入的路由中匹配到数据就算匹配成功 会立刻停止路由层其他的匹配直接执行对应的视图函数
	re_path('test', views.test)
	re_path('testadd', views.testadd)
	当用户输入ip:端口/testadd/那么只会匹配到test 并进入test视图函数
	re_path('test/', views.test)  # 能够解决 但是还是有问题
	当用户输入ip:端口/test/iehoasjd依然能够匹配到所以还得改进
	re_path('^test/$', views.test)  # 最后得出的写法 
	django1.X路由匹配使用的是url() 功能与django2.X及以上的re_path()一致

4.正则匹配的无名和有名分组
	无名分组
		re_path('^test/(\d{4})/', views.test)
		正常情况下给正则加括号并不会影响查找但是在django中
		会将括号内正则匹配到的内容当做位置参数传递给视图函数
	有名分组
		re_path('^test/(?P<year>\d{4})/', views.test)
		会将括号内正则匹配到的内容当做关键字参数传递给视图函数
	注意!!!上述的分组不能混合使用!!!

反向解析

通过一个名字可以反向解析出一个结果 该结果可以访问到某个对应的路由

基本使用
	1.路由匹配关系起别名
		path('login', views.login, name='login_view')
	2.反向解析语法
		html页面上的模板语法 {% url 'login_view' %}
		后端语法			reverse('login_view')

动态路由的反向解析
	path('func1/<str:info>', views.func1_func, name='func1_view'
	html页面上的模板语法	{% url 'func1_view' 'jason' %}
	后端语法				reverse('func1_view', args=('嘻嘻',))

标签:匹配,框架,views,django,re,test,path,路由
From: https://www.cnblogs.com/wei0919/p/16980580.html

相关文章

  • django 模板层 待补充
    目录django模板层模板语法之传值操作传值操作模板语法的传值特性过滤器(内置函数)django模板层模板语法之传值操作模板语法{{}}#主要与数据值相关{%%}#主要与......
  • Qt开发Active控件:如何使用ActiveQt Server开发大型软件的主框架(2)
    Qt开发Active控件:如何使用ActiveQtServer开发大型软件的主框架注:本文更多地是带着如何去思考答案,而不是纯粹的放一个答案上来,如果你需要直接看到完整的答案,请直接看实例......
  • django之视图层
    django之视图层视图函数结构视图函数的参数与返回值每一个用来处理请求的视图函数,默认都需要一个request形参来接收request对象。每一个用来处理请求的视图函数必须返......
  • django之视图层
    目录django之视图层视图层必会三板斧JsonResponse对象request对象获取文件FBV与CBVCBV源码解析django之视图层视图层必会三板斧用来处理请求的视图函数都必须返回HttpRe......
  • django模板层
    目录django模板层模板语法传值模板语法传值特性模板语法之过滤器(内置函数)django模板层模板语法传值1.精准传值returnrender(request,'01.html',{'a':name,'......
  • django 4 视图层
    今日内容详细目录今日内容详细视图层视图层之三板斧JsonResponse对象视图层之request对象获取文件视图层之FBV与CBVCBV源码剖析模板层模板语法之传值操作模板语法之传值特......
  • Django4
    路由分发1.django是专注于开发应用的,当一个django项目特别庞大的时候,所有的路由与视图函数映射关系全部写在项目名下urls.py(总路由),很明显太冗余也不便于管理,这个时候也......
  • django框架(部分讲解)
    路由分发django每个应用都可以有自己独立的路由层、静态文件、模板层。基于该特性多人开发项目就可以完全解耦合,之后利用路由分发还可以整合到一起多个应用都有很多路由......
  • python之路48 django 视图层、模板层
    视图层之必会三板斧用来处理请求的视图函数都必须返回HttpResponse对象完全正确classHttpResponse:passreturnHttpResponse()defrender():returnH......
  • django 视图层
    简介:视图层三板斧详解,JsonResponse对象,request对象获取文件,FBV与CBV,CBV源码剖析目录视图层视图层三板斧详解JsonResponse对象request对象获取文件FBV与CBVFBVCBV源码剖析......