Django——路由2
1、路由分发
在开发中可以会有很多个应用 , 把所有的路由都写在根目录的urls中是不现实。
在每一个应用中都自带创建一个urls进行路由的配置 , 但是浏览器要进行访问该应用中路由,需要通过根目录中的urls路由入口进行访问。
# 只要路由是从app02开始的 , 都指向app02这个应用中的urls文件进行查询 path('app02/' , include('app02.urls')), path('app03/' , include('app03.urls'))
2、路由配置
1、使用正则表达式
re_path函数是使用正则表达式定义url模式
re_path(r'^\d{2,}$' , views.NumberInUrl), re_path(r'^[A-Za-z]+$' , views.charurl)
2、URL参数传递
使用path函数解析url的时候 , 可以通过<name>
来捕获url路径中对应位置的的数据 , 接收到数据之后会传递给对应映射关系的视图函数中
path('text/<url_data>/' , views.getData), path('text/<data1>/<data2>/' , views.getData2) def getData(request , url_data): return HttpResponse(f'从URL中获取到的数据为:{url_data}') def getData2(request , data1 , data2): return HttpResponse(f'从URL中获取到的数据为:{data1} 和 {data2}')
路由转换器
django中url路径获取的数据解析默认是字符串 , 可以使用转换器来完成一些指定类型的转换。
转换器 str:匹配出来路由中分隔符/之外的非空字符串 int:匹配0以及正整数。获得的数据类型为int slug:匹配字母 , 下划线 , 数字 , 横杠组成的字符串 path:匹配任何非空的字符
path('data1/<str:data>', views.getdata1), path('data2/<int:data>', views.getdata2), path('data3/<slug:data>', views.getdata3), path('data4/<path:data>', views.getdata4), def getdata1(request , data): print(type(data)) return HttpResponse(f'使用str转换器 , 数据为:{data}') def getdata2(request , data): print(type(data)) return HttpResponse(f'使用int转换器 , 数据为:{data}') def getdata3(request , data): print(type(data)) return HttpResponse(f'使用slug转换器 , 数据为:{data}') def getdata4(request , data): print(type(data)) return HttpResponse(f'使用path转换器 , 数据为:{data}')
在配置路由时也可以在path或者re_path的第三个参数位置写上 , 为视图函数传递附加数据.
在视图函数中定义参数自带了默认值 , 要调用默认值参数的视图函数;在url中定义一个带参的url和不带参的url来映射这个视图函数。
当访问的url是不带参数的 , 那么视图函数参数就使用默认值;
当访问url是带有参数的 , 那么视图函数的参数会直接获取url传递的参数进行使用。
# 附加数据{'ex':456} path('extra/<data>/' , views.extra, {'ex':456}), # 不带参数的url path('default/' , views.default_data), # 带参数的url path('default/<data>/', views.default_data), def extra(request , data , ex): return HttpResponse(f'从URl中获取的数据:{data} , 附加数据:{ex}') def default_data(request , data=123): return HttpResponse(f'视图函数default_data的默认参数为data=123 , 当前的data值为:{data}')
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探