Django之路由分发和反向解析
一.路由分发:
路由分发是指:总路由不再直接做路由与视图函数的对应关系,而是将获取的路由分发给下面的app去处理对应关系
from django.conf.urls import url,include
from app03 import urls as app03_urls
from app01 import urls as app01_urls
from app02 import urls as app02_urls
urlpatterns = [
url(r'^app03/',include(app03_urls)),
url(r'^app01/',include(app01_urls)),
url(r'^app02/',include(app02_urls)) ]
首先导入include模块,其次确保app下有urls文件,运行效果如下:

如果想访问app01下的index页面,只需要加上app01/index即可
同样的app中也可以有views文件和templates文件夹,这样每个app就是独立的前后端程序
二.反向解析
试想一个场景,你有200多个a标签,href都指向index/,有一天在urls里面index改为了new_index,那么你只能手动改变a标签中的href,当你改完,又变成了my_index,那么一天的时间都可能在改地址,那么有没有什么方法,不再把程序写死,反向解析就是应用于此。
通过名字反向推导出页面文件,类似于字典
无分组:
urlpatterns = [
url(r'^login/',views.login,name='login_name'),
]
第一步指定name
在后端的使用:
首先导入reverse模块
from django.shortcuts import reverse
其次在views的函数里面:
def login(request):
res=reverse('login_name')#login_name是在urls里面定义的名字
print(res)
其中res的打印如下:

在前端的使用:
<a href="{%url 'login_name'%}">1111111111</a>
语法:{%url ‘ 名称’%}
这样的写法就不会写死了,无论怎么改,只要名字不变,都可以导向该页面
无名分组:
urlpatterns = [
url(r'^login/(\d+)',views.login,name='login_name'),
]
views的函数:
def login(request,xxx):
res=reverse('login_name',args=(xxx,))
print(res)
打印一下res:

res=reverse('login_name',args=(xxx,)),其中的args=(xxx,),不是固定的,如果你喜欢写个1也不会影响结果,
例如res=reverse('login_name',args=(1,)),只要满足匹配规则,都是可以随意写的
在前端的使用:
<a href="{%url 'login_name' xxx%}">1111111111</a>
其中xxx是我在renderf中传入的参数,可以动态的指定路径,如果嫌弃麻烦,可以随意写个满足正则的参数,我的正则是\d+,所以下面的也是可以的
<a href="{%url 'login_name' 2333%}">1111111111</a>

语法:{%url ‘ 名称’ 参数%},必须要有,不然不能匹配
有名分组:
urlpatterns = [
url(r'^login/(?P<year>\d+)',views.login,name='login_name'),
]
views的函数:
def login(request,year):
res=reverse('login_name',kwargs={'year':year})
print(res)
打印一下res:

res=reverse('login_name',kwargs={'year':year},其中的kwargs={'year':year}同样不是固定的,如果你喜欢写个1也不会影响结果,
只要满足匹配规则,都是可以随意写的
在前端的使用:
<a href="{%url 'login_name' xxx%}">1111111111</a>
在前端使用是和无名分组一样的
PS:在使用无名分组,有名分组的时候,前端一定要在定义的名字后面加上参数,不然不能匹配
Django之路由分发和反向解析的更多相关文章
- Django学习之路由分发和反向解析
原 Django学习之路由分发和反向解析 2018年07月12日 14:04:55 huangql517 阅读数 519 1>路由分发 我们之前学习的路由配置都是在项目的全局控制文件(项目名称目 ...
- django之路由层(反向解析)总结
表关系的建立方式 表与表之间的关系就三种 一对一 OneToOne(to='') # to后面可以跟字符串的表名 也可以直接跟变量名表名(该表名必须在上面提前定义出来) 一对多 ForeignKey( ...
- Django之路由分发反向解析
Django路由分发|反向解析 当一个Django中有多个app时,路由会有很多,将这些路由都写在与项目同名的文件夹下就会显得很多,很乱.并且在协同开发的时候容易出现相同的命名,当项目合并后就会出现路 ...
- django路由匹配、反向解析、无名有名反向解析、路由分发、名称空间
目录 django请求生命周期流程图 1.Django请求的生命周期的含义 2.Django请求的生命周期图解及流程 3.Django的请求生命周期(分布解析) 路由层 1.路由匹配 2.path转换 ...
- django 路由层(反向解析)03
目录 ORM表关系建立 Django请求生命周期流程图 urls.py 路由层 无名分组 有名分组 反向解析 无名分组的反向解析 有名分组的反向解析 以编辑功能为例 路由分发 名称空间 伪静态 虚拟环 ...
- django之路由分发
路由分发决定哪一个路由由哪一个视图函数来处理. 注意:django2.0里的re_path和django1.0里的url除了名字不一样,其他都一样. 简单配置 from django.urls imp ...
- Django框架路由分发-名称空间
目录 一:路由分发 1.路由分发简介 2.总路由分发配置 3.总路由终极配置(不需要导应用路由,直接点应用即可) 4.子路由配置 二:名称空间 1.名称空间应用场景 3.解决方式二>>&g ...
- django命名url与url反向解析
1.在urls.py路由中指定别名 2.在views.py视图文件中导入from django.shortcuts import render, redirect, reverse 3.也可从这里导入 ...
- Django之路由分发系统
web的基本工作流程 首先,我们先来思考一下我们平常在上网浏览网页时候的场景,大致就是打开一个web浏览器,输入某一个网站的地址,然后转到该网址,在浏览器中得到该网址的页面.从这个场景中我们可以抽象出 ...
随机推荐
- Windows环境下消息中间件RabbitMq的搭建与应用
前言 消息中间件目前已经在很多大型的项目上得到了运用,我们常见的有 RabbitMq, activitymq,kafka,rocketmq,其中rocketmq是阿里自己在kafka的基础上用java ...
- 关于Node.js中的路径问题
在前端学习过程中,涉及到路径的问题非常多,相对路径,绝对路径等.有时候明明觉得没问题,但是还是会出错.或者说线下没问题,但是到了线上就出现问题,因此弄懂路径问题,非常关键.我们需要知道为什么这个地方既 ...
- Django学习之十二:Cache 缓存组件
目录 Django Cache 缓存组件 缓存逻辑伪代码 配置缓存源 可配置参数说明 01. Django的默认缓存 02. 基于Redis的django-redis 03. 自定义cache 04. ...
- Alpha阶段Scrum Meeting合集(江山代有才人秃队)
Day URL 第一天 第1篇Scrum冲刺博客 第二天 第2篇Scrum冲刺博客 第三天 第3篇Scrum冲刺博客 第四天 第4篇Scrum冲刺博客 第五天 第5篇Scrum冲刺博客 第六天 第6篇 ...
- Win10常见问题记录
基本信息 记录我在使用win10过程中遇到的一些问题 我所使用的两个win10系统 Win10 企业版 1607(家里电脑) Win10 专业版 1806(公司电脑) win10 开启Sets 请问您 ...
- Ambari REST API 使用介绍 - How To: Use Swagger with Ambari (Explore Ambari REST)
How To: Use Swagger with Ambari (Explore Ambari REST) Article Note : This feature is available from ...
- AI应用开发实战 - 从零开始配置环境
AI应用开发实战 - 从零开始配置环境 与本篇配套的视频教程请访问:https://www.bilibili.com/video/av24421492/ 建议和反馈,请发送到 https://gith ...
- Linux 桌面玩家指南:12. 优秀的文本化编辑思想大碰撞(Markdown、LaTeX、MathJax)
特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...
- C#运算符的简单使用测试
在代码中看到的代码中|=,有点不太理解故重新学习了下位运算符. 位运算符在 c# 中的测试用例 [TestMethod] public void TestMethod1() { var a = fal ...
- SpringBoot 2.X集成Hive-jdbc 3.1.1
最近公司有一个需求,需求的内容是根据用户页面选择的参数条件查询Hive,数量量大致是300万以内,要求3秒响应.使用的其它的技术就不要说了,先说说SpingBoot集成Hive-jdbc吧,网上虽然有 ...