url别名和反向解析

  1. 我们平时写的url名字都是死的,如果项目过大,需要项目中某个文件名改动一下,那么改动起来就不是一般的麻烦了,所以我们就在定义的时候给url起一个别名,以后不管哪个文件中运用都是用它的别名,这样就方便多了,你的路径名不管怎么改变都不会影响你的操作

  2. 如何给你url起别名

    url(r'^home1/',views.home,name='home'),
    # 像这样,在url后边加一个name叫做home,之后再其他的文件中需要引用这个url就可以直接使用别名 url(r'^home1/(\d+)',views.home,name='home'),
    # 如果分组传参数的这种url要怎么去应用呢
  3. 别名的使用(反向解析

    #在文件中使用时,我们需要导入一个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>

命名空间

路由分发

  1. 由于在项目中可能会创建多个不同的app,如果这些app应用的url都写在项目下的urls文件下,如果文件路径过多,就会很多的文件存在,修改起来特别麻烦,所以我们要解决这个问题

  2. 如何解决这个问题呢?

    #我们可以在每个应用下都写上一个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中找路径
  3. 在每个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路由中找相应的路由地址

命名空间

  1. 由于我们在做项目时会给url起别名,如果有多个应用的url别名一样,那么就会出现查找的文件不对,出现错误

  2. 这样我们就需要在项目的urls文件中在改变一下配置了

    urlpatterns = [
    url(r'^app01/',include('app01.urls',namespace='app01')),
    url(r'^app02/',include('app02.urls',namespace='app02')),
    ] # namespace = '别名',意思是当前这个app01.urls中的url都归属于当前这个命名空间app01的
  3. 在应用的时候:

    #html文件中
    <a href="{% url 'app01:home' %}">返回首页</a>
    # 在别名的前面你需要加上这个命名空间的名称 #在后端的文件中
    return redirect('app02:book2') # 在别名的前面你需要加上这个命名空间的名称

django url别名和反向解析 命名空间的更多相关文章

  1. day58——模板继承、组件、自定义标签和过滤器、inclusion_tag、静态文件配置、url别名和反向解析、url命名空间

    day58 模板相关 模板继承(母版继承) 1. 创建一个xx.html页面(作为母版,其他页面来继承它使用) 2. 在母版中定义block块(可以定义多个,整个页面任意位置) {% block co ...

  2. Django之url上的include,URL命名和反向解析,命名空间

    include其他的URLconfs   #At any point, your urlpatterns can “include” other URLconf modules. This #esse ...

  3. django系列3.2--url的别名和反向解析 reverse

    命名URL和反向解析 在网页中某些要提交的地址等,需要改变的时候,此时网页过多,如果一个一个的去改,工作量巨大,这时就可以用到命名url,在html文件的模版中,只写命名,这样当需要我们改变urls. ...

  4. django 路由层(反向解析)03

    目录 ORM表关系建立 Django请求生命周期流程图 urls.py 路由层 无名分组 有名分组 反向解析 无名分组的反向解析 有名分组的反向解析 以编辑功能为例 路由分发 名称空间 伪静态 虚拟环 ...

  5. Django url配置 正则表达式详解 分组命名匹配 命名URL 别名 和URL反向解析 命名空间模式

    Django基础二之URL路由系统 本节目录 一 URL配置 二 正则表达式详解 三 分组命名匹配 四 命名URL(别名)和URL反向解析 五 命名空间模式 一 URL配置 Django 1.11版本 ...

  6. day53:django:URL别名/反向解析&URL分发&命名空间&ORM多表操作修改/查询

    目录 1.URL别名&反向解析 2.URL分发&命名空间 3.ORM多表操作-修改 4.ORM多表操作-查询 4.1 基于对象的跨表查询 4.2 基于双下划线的跨表查询 4.3 聚合查 ...

  7. Django-静态文件导入/url命名及反向解析

    一.静态文件导入 js.css.img等都叫做静态文件,那么关于django中静态文件的配置,我们就需要在settings配置文件里面写上这写内容: # STATIC_URL = '/xxx/' #别 ...

  8. django路由匹配、反向解析、无名有名反向解析、路由分发、名称空间

    目录 django请求生命周期流程图 1.Django请求的生命周期的含义 2.Django请求的生命周期图解及流程 3.Django的请求生命周期(分布解析) 路由层 1.路由匹配 2.path转换 ...

  9. Django之路由分发反向解析

    Django路由分发|反向解析 当一个Django中有多个app时,路由会有很多,将这些路由都写在与项目同名的文件夹下就会显得很多,很乱.并且在协同开发的时候容易出现相同的命名,当项目合并后就会出现路 ...

随机推荐

  1. 如何在Ubuntu Server 18.04 LTS中配置静态IP地址

    安装Ubuntu Server 18.04后需要分配一个的静态IP地址.先前的LTS版本Ubuntu 16.04使用/etc/network/interfaces文件配置静态IP地址,但是Ubuntu ...

  2. 很多人不知道的Python 炫技操作:条件语句的写法

    有的人说 Python 是一门 入门容易,但是精通难的语言,这一点我非常赞同. Python 语言里有许多(而且是越来越多)的高级特性,是 Python 发烧友们非常喜欢的.在这些人的眼里,能够写出那 ...

  3. java基础:详解类和对象,类和对象的应用,封装思想,构造方法详解,附练习案列

    1. 类和对象 面向对象和面向过程的思想对比 : 面向过程 :是一种以过程为中心的编程思想,实现功能的每一步,都是自己实现的 面向对象 :是一种以对象为中心的编程思想,通过指挥对象实现具体的功能 1. ...

  4. kafka rebalance解决方案 -incremental cooperative协议和static membership功能

    apache kafka的重平衡(rebalance),一直以来都为人诟病.因为重平衡过程会触发stop-the-world(STW),此时对应topic的资源都会处于不可用的状态.小规模的集群还好, ...

  5. Word2Vec和LDA的区别与联系

    Word2vec是目前最常用的词嵌入模型之一.是一种浅层的神经网络模型,他有2种网络结构,分别是CBOW(continues bag of words)和 skip-gram.Word2vec 其实是 ...

  6. SonarQube学习(一)- 使用Docker安装SonarQube(亲测可用)

    一.前言 不得不吐槽下,现在的博客写的真太扯淡了,就网上写的使用docker安装SonarQube而言,搜到十篇文章,最少9篇照着操作配置都不可用,卡在SonarQube无法启动.自然,我也是被折磨的 ...

  7. 实验1 C语言开发环境使用和编程初体验

    #include <stdio.h> #include <stdlib.h> int main() { printf ("202083290273\n2020 ,wh ...

  8. CSS系列 (04):盒模型详解

    盒模型 CSS盒模型分成W3C标准盒模型和IE模型 W3C标准盒模型(默认):box-sizing: content-box padding和border都会撑开盒子,改变盒子的宽度高度 总宽度:wi ...

  9. easyui中连接按钮样式

    方法1. <a href="otherpage.php" class="easyui-linkbutton" data-options="ico ...

  10. J.U.C关于Execute实现

    JAVASE5的Execute将为你管理Thread对象,是启动任务的优选方案 /***newCachedThreadPool在程序的执行过程中通常会创建于所需任务相同数量的线程即可以达到Intege ...