django url别名和反向解析 命名空间
url别名和反向解析
我们平时写的url名字都是死的,如果项目过大,需要项目中某个文件名改动一下,那么改动起来就不是一般的麻烦了,所以我们就在定义的时候给url起一个别名,以后不管哪个文件中运用都是用它的别名,这样就方便多了,你的路径名不管怎么改变都不会影响你的操作
如何给你url起别名
url(r'^home1/',views.home,name='home'),
# 像这样,在url后边加一个name叫做home,之后再其他的文件中需要引用这个url就可以直接使用别名 url(r'^home1/(\d+)',views.home,name='home'),
# 如果分组传参数的这种url要怎么去应用呢
别名的使用(反向解析)
#在文件中使用时,我们需要导入一个django的模块,这个模块就是专门用来负责反向解析别名的
from django.urls import reverse
#使用如下
reverse('别名')
#例如:
return redirect(reverse('home')) ---- 翻译成 /home1/
# 我们只需要在需要使用这个文件的时候将这个文件的别名使用reverse()方法反解析出来就行了 或者直接可以写成 return redirect('home') 不需要使用serverse也可以解析出来 # 在html文件中的引用
<a href="{% url 'home' %} ">主页面</a> ---- 翻译成 /home1/
#使用url对这个别名进行解析 #带参数的反向解析:
reverse('index',args=(10,11,)) -- /index2/10/ #带参数的反向解析:
{% url '别名' 参数1 参数2 %}
例如:{% url 'index' 10 %} -- /index2/10/ <a href='/index2/10/'>hhh</a>
命名空间
路由分发
由于在项目中可能会创建多个不同的app,如果这些app应用的url都写在项目下的urls文件下,如果文件路径过多,就会很多的文件存在,修改起来特别麻烦,所以我们要解决这个问题
如何解决这个问题呢?
#我们可以在每个应用下都写上一个urls.py文件,在这个文件中写入我们需要用到的url, # 但是浏览器找的url时会从你的项目文件urls文件去找,那么我们需要在项目的urls文件也配置一下
# 首先导入一个包,专门负责路由分发的
from django.conf.urls import include #所以我们在项目下的urls文件中写url时这样写:
urlpatterns = [
url(r'^app01/',include('app01.urls')),
url(r'^app02/',include('app02.urls')),
]
# 这个意思就会只要匹配到访问路径是app01的就去app01.urls中找路径,匹配到访问路径是app02的就去app02.urls中找路径
在每个app文件下再写一个路由文件urls.py
1. app01
urlpatterns = [
# url(r'^admin/', admin.site.urls),
url(r'^home1/',views.home,name='home1'),
] 2. app02
urlpatterns = [
# url(r'^admin/', admin.site.urls),
url(r'^home2/',views.home,name='home1'),
] # 当通过项目文件中的路由匹配到那个app下的时候就会在这个app路由中找相应的路由地址
命名空间
由于我们在做项目时会给url起别名,如果有多个应用的url别名一样,那么就会出现查找的文件不对,出现错误
这样我们就需要在项目的urls文件中在改变一下配置了
urlpatterns = [
url(r'^app01/',include('app01.urls',namespace='app01')),
url(r'^app02/',include('app02.urls',namespace='app02')),
] # namespace = '别名',意思是当前这个app01.urls中的url都归属于当前这个命名空间app01的
在应用的时候:
#html文件中
<a href="{% url 'app01:home' %}">返回首页</a>
# 在别名的前面你需要加上这个命名空间的名称 #在后端的文件中
return redirect('app02:book2') # 在别名的前面你需要加上这个命名空间的名称
django url别名和反向解析 命名空间的更多相关文章
- day58——模板继承、组件、自定义标签和过滤器、inclusion_tag、静态文件配置、url别名和反向解析、url命名空间
day58 模板相关 模板继承(母版继承) 1. 创建一个xx.html页面(作为母版,其他页面来继承它使用) 2. 在母版中定义block块(可以定义多个,整个页面任意位置) {% block co ...
- Django之url上的include,URL命名和反向解析,命名空间
include其他的URLconfs #At any point, your urlpatterns can “include” other URLconf modules. This #esse ...
- django系列3.2--url的别名和反向解析 reverse
命名URL和反向解析 在网页中某些要提交的地址等,需要改变的时候,此时网页过多,如果一个一个的去改,工作量巨大,这时就可以用到命名url,在html文件的模版中,只写命名,这样当需要我们改变urls. ...
- django 路由层(反向解析)03
目录 ORM表关系建立 Django请求生命周期流程图 urls.py 路由层 无名分组 有名分组 反向解析 无名分组的反向解析 有名分组的反向解析 以编辑功能为例 路由分发 名称空间 伪静态 虚拟环 ...
- Django url配置 正则表达式详解 分组命名匹配 命名URL 别名 和URL反向解析 命名空间模式
Django基础二之URL路由系统 本节目录 一 URL配置 二 正则表达式详解 三 分组命名匹配 四 命名URL(别名)和URL反向解析 五 命名空间模式 一 URL配置 Django 1.11版本 ...
- day53:django:URL别名/反向解析&URL分发&命名空间&ORM多表操作修改/查询
目录 1.URL别名&反向解析 2.URL分发&命名空间 3.ORM多表操作-修改 4.ORM多表操作-查询 4.1 基于对象的跨表查询 4.2 基于双下划线的跨表查询 4.3 聚合查 ...
- Django-静态文件导入/url命名及反向解析
一.静态文件导入 js.css.img等都叫做静态文件,那么关于django中静态文件的配置,我们就需要在settings配置文件里面写上这写内容: # STATIC_URL = '/xxx/' #别 ...
- django路由匹配、反向解析、无名有名反向解析、路由分发、名称空间
目录 django请求生命周期流程图 1.Django请求的生命周期的含义 2.Django请求的生命周期图解及流程 3.Django的请求生命周期(分布解析) 路由层 1.路由匹配 2.path转换 ...
- Django之路由分发反向解析
Django路由分发|反向解析 当一个Django中有多个app时,路由会有很多,将这些路由都写在与项目同名的文件夹下就会显得很多,很乱.并且在协同开发的时候容易出现相同的命名,当项目合并后就会出现路 ...
随机推荐
- 出现VMware Workstation 无法连接到虚拟机。请确保您有权运行该程序、访问该程序使用的所有目录以及访问所有临时文件目录。 未能将管道连接到虚拟机: 所有的管道范例都在使用中。
今天在学习Linux 的时候 启动VM时出现了这个问题, 搞了很久终于弄好了, 就写篇博客来记录一下,帮助一下大家,如果对大家有帮助,还请大哥大姐点个关注,你的支持就是我坚持下去的动力 ! VMwar ...
- flowable中传入审批人是list
package org.springblade.flow.engine.listener; import org.flowable.engine.delegate.DelegateExecution; ...
- Java基础集合简单总结
集合 Collection单列集合有List 和 Set List集合有: ArrayList集合 特点: 1.存取有序 可以重复 有索引 2.底层是数组实现,查询快,增删慢 ArrayList底层: ...
- 远程桌面连接(出现身份验证错误。要求的函数不支持)这可能由于CredSSP加密Oracle修正。
家庭版解决方案 在进行远程桌面时会遇到这种情况.对于Windows 10家庭版用户,是不支持组策略功能的.本文根据官方文档采用修改注册表的方式达到相同的目的. 1.打开注册表 win + R 键 ...
- 使用swagger上传文件
经常使用swagger,可以通过设置[ProducesResponseType]标记接口的返回信息:swagger也能通过接口的参数列表,自动获得发送的数据结构信息. 不过有一个例外,就是上传文件的时 ...
- MongoDb学习三(spring-data-mongodb)
本文采用2个种配置方式.xml配置 代码配置方式进行数据库的连接.实现简单的增删该查等一些操作.代码都有注释官方文档如下https://docs.spring.io/spring-data/mongo ...
- easyui中的下拉菜单是树形结构时如何实现onchange方法
今天碰到一个问题就是我写的代码中的一个下拉列表显示的是树型菜单,代码如下(使用的是easyui): .... <tr> <td>地区:</td> <td> ...
- 风炫安全WEB安全学习第三十八节课 越权漏洞演示与讲解
风炫安全WEB安全学习第三十八节课 越权漏洞演示与讲解 越权漏洞 0x01 漏洞介绍 越权漏洞的危害与影响主要是与对应业务的重要性相关,比如说某一页面服务器端响应(不局限于页面返回的信息,有时信息在响 ...
- 神经网络中的降维和升维方法 (tensorflow & pytorch)
大名鼎鼎的UNet和我们经常看到的编解码器模型,他们的模型都是先将数据下采样,也称为特征提取,然后再将下采样后的特征恢复回原来的维度.这个特征提取的过程我们称为"下采样",这个恢复 ...
- ABP vNext 自动注入,暗藏天坑如斯
导言 我们在使用ABP vNext框架时,都知道该框架为我们实现了自动依赖注入(实现自动注入需要在项目里面创建Module类,并且将Module类上的DependsOn到相应的启动Module类或调用 ...