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. vscode php转到定义

    点击再settings.json 中编辑 添加这一行,内容为php的安装路径

  2. Centos8自动挂载U盘移动硬盘解决办法

    Centos默认是不能识别NTFS文件系统的U盘.移动硬盘的.查阅了很多资料讲到的都是需要安装ntfs-3g安装包. 安装完后每次插入移动存储介质时,都需要手动去挂载. 作为一个做技术的,如果不能解决 ...

  3. swift学习之label,button,imageView,字符串,数组,字典

    import UIKit class ViewController: UIViewController,UITextFieldDelegate { var textField: UITextField ...

  4. C# 汉字转拼音 取汉字拼音的首字母

    using System.Text.RegularExpressions; namespace DotNet.Utilities { /// <summary> /// 汉字转拼音类 // ...

  5. easyui中清空table列表中数据

    方法一 var item = $('#filegrid').datagrid('getRows');//获取类表中全部数据if (item) { for (var i = item.length - ...

  6. Raft算法系列教程4:日志不一致的解决

    网络不可能一直处于正常情况,因为Leader或者某个Follower有可能会崩溃,从而导致日志不能一直保持一致.因此存在以下三种情况: (1)Follower缺失当前Leader上存在的日志条目.(2 ...

  7. .netcore 微服务快速开发框架 Anno&Viper -分布式锁是个什么鬼

    1.什么是锁 锁是为了解决多线程或者多进程资源竞争的问题. 同一进程的多个线程资源竞争可以用lock解决. lock 关键字可确保当一个线程位于代码的临界区时,另一个线程不会进入该临界区. 如果其他线 ...

  8. 分布式零基础之--分布式CAP理论

    研究到分布式系统CAP理论,记录下来下回详细分析它: CAP是指三个单词的简称 C: 一致性(Consistence) 所有节点访问的都是同一份最新的数据副本. A: 可用性(Availability ...

  9. 破解版IDM使用问题

    正版的IDM一般下载安装后有30天的免费使用期,过了就需要买正版序列号才能使用,网上一般提供的破解版的IDM安装后又存在无法添加到chrome插件的问题 这里针对这个问题给出解决方案: 首先下载破解版 ...

  10. 企业集群架构-03-NFS

    NFS 目录 NFS NFS基本概述 NFS应用场景 NFS实现原理 NFS总结 NFS服务端安装 环境准备 服务端安装NFS 服务端NFS配置 服务端开机自启 服务端验证配置 NFS客户端挂载卸载 ...