Django学习之路由分发和反向解析

2018年07月12日 14:04:55 huangql517 阅读数 519

1>路由分发

我们之前学习的路由配置都是在项目的全局控制文件(项目名称目录下的urls.py),

这个一个文件当中配置映射关系,当一个项目的url越来越多时,比如项目当中一般都分一级菜单,二级菜单等等

这些主页面url和众多不同分类下的子页面url全都挤在一个文件下,就会造成后期维护的困难,

所以,引入路由分发来解决这个问题,

其思想就是,一些公共的主页面/整个网站的一级菜单等全局视角的页面,放在项目的urls.py当中,

一些单个应用对应的url就放在应用目录下面的urls.py当中,这样,用户访问页面,先再项目的urls中找,

找不到,再去单个应用的urls中找,一来是urls配置解耦,二来这样显得更有层次感,方便管理。

说这么多,究竟怎么做呢,其实也不难,

上面说了,既然应用目录下面也要对应有个urls.py来存放本应用相关的url,那么新建一个urls.py文件肯定是要的。

项目的urls做一点小小的改动,如下

2>先看登陆验证的例子

view视图函数编写,若是get请求,就返回login页面,若是post请求,就验证账号密码,再根据

验证结果返回200或者404。

html的action,还是跳转到自己

若碰上什么forbidden问题,把setting 的这行代码先注释掉, 就行了

效果

好,需求来了, 现在网站变化,重新定义了下之前的login页面,url由之前的login变成denglu

嗯,顺理成章的,我们想到把urls的配置改下不就行了,如下

是的,很容易想到,我们只改了urls的路径,因为页面post请求其实也是跳转到自己页面,

而之前action是写死了login/的页面,那里没改过来,urls也没了login/这个apth对应的

处理函数,自然就报404,找不到页面的错误了。

恩,那就把action的也改成denglu不就行了吗,是可以,但这是比较低级的处理方法,因为

你现在还只要改一处就可以,要是有很多地方都引用这个页面,岂非都要一个一个的去改?

时间一长,工作量一大,就容易遗漏,容易出错,

有没有一种方案,让所有引用的地方都调用原生的path,就是只要urls.py的path一变化,其他地方

自动关联到最新的path,而不用像之前一样再一个一个去找,一个一个去改。

有的, 反向解析就只解决这件事的高级处理方法

3>再说反向解析

其实就是相当于给path取个别名,爱他地方通过特定的方式来引用这个别名就行了,这样就是实现了,

不管你的path怎么变,反正我找的这个名称(path的别名)就是指到你这里,就行了。

一点点改变就可以实现反向解析效果,

urls配置的改写

HTML引用

这就可以了!

4>python代码实现反向解析

刚刚是HTML文件中实现的反向解析,再看下python这边怎么实现

需要导入reverse方法

urls中新增配置, login2/路径的别名LOGIN2,正则匹配login3/XXXX/ 别名为LOGIN3

用reverse函数反解析,如下

转载于:https://www.cnblogs.com/luowenConnor/p/11285376.html

Django学习之路由分发和反向解析相关推荐

  1. django ajax 更新表格_Django(反向解析,路由分发、名称空间、视图层、虚拟环境、Django版本、json,CBV)...

    https://www.zhihu.com/video/1249117508688711680 每日测验 """ 今日考题 1.列举你知道的orm数据的增删改查方法 2. ...

  2. Django视图层:URL的反向解析(主路由include之namespace,子路由之name,模板标签{%url%},视图reverse()函数,反向解析示例,URL命名空间

    一.视图层The view layer Django 具有 "视图" 的概念,负责处理用户的请求并返回响应. 二.URL反向解析Reverse resolution of URLs ...

  3. Django中的路由分发

    路由分发 第一次听说路由分发的时候有点懵,看后才知道是一个比较简单的概念,并且大家都在用 其思想就是,一些公共的主页面/整个网站的一级菜单等全局视角的页面,放在项目(工程)的urls.py当中,一些单 ...

  4. python动态映射_Python Django框架url反向解析实现动态生成对应的url链接示例

    本文实例讲述了Python Django框架url反向解析实现动态生成对应的url链接.分享给大家供大家参考,具体如下: url反向解析:根据url路由规则,动态生成对应的url链接 (防止硬编码). ...

  5. Django反向解析

    Django反向解析 通过视图函数的名称来解析出视图函数的访问路由 1.用途 当视图越来越多的时候,可能会觉得之前配置的路由不够准确,如果修改配置的路由,那么之前在页面中填写的超链接的网址都需要修改, ...

  6. Django的url反向解析

    Django中提供了一个关于URL的映射的解决方案,可以做两个方向的使用: 1.普通解析过程:由客户端的浏览器发起一个url请求,Django根据URL解析,把url中的参数捕获,调用相应的视图,获取 ...

  7. Django学习之路-基础篇

    Django 学习之路 一.Django项目创建 1.项目结构 1.1. settings.py 文件 1.2 URL 1.3 视图函数 1.4 路由配置-path 二.请求与响应 2.1.请求和响应 ...

  8. djang urls.py 无名有名分组,反向解析,路由分发,名称空间,伪静态,虚拟环境,django版本...

    路由层 路由匹配:APPEND_SLASH = False , 取消自动补全 , settings.py 中添加字段即可 若url尾部为书写/ , django内部会自动补全 urls.py 中 对应 ...

  9. Web框架之Django_03 路由层了解(路有层 无名分组、有名分组、反向解析、路由分发 视图层 JsonResponse,FBV、CBV、文件上传)

    阅读目录 一.路由层:(Django的路由系统) 二.伪静态网页和虚拟环境: 三.FBV与CBV.JsonResponse.文件上传 一.路由层:(Django的路由系统) URL配置(Django项 ...

最新文章

  1. 【剑指offer】整数中1出现的次数,C++实现
  2. canvas在舞台上点击后图片旋转_View绘制系列(10)Canvas基础变换
  3. Base64编码原理与应用
  4. Scala学习笔记:how to convert a StringRDD to Array
  5. 包含以下字段的 struct 怎么解决_S7-300/400进阶笔记4-2:STEP7的“结构”STRUCT数据类型的用法...
  6. 什么是程序中的数字指纹
  7. oracle11g和10的区别,同平台升级 oracle 10 到 oracle11g的一些考虑和实际操作
  8. 虚拟机ping百度失败:PING www.a.shifen.com (163.177.151.110) 56(84) bytes of data.光标就一直闪
  9. 计算机领域,客观事物的属性,客观事物
  10. Server2016的安装步骤
  11. 计算机和电脑键盘进水怎么办,电脑键盘进水怎么办 电脑键盘进水解决方法
  12. 用js实现动态添加表格数据
  13. 建筑师妹岛和世为日本西武设计新型旗舰“球形车头”列车
  14. VUE的两种跳转push和replace对比区别
  15. asu在线硕士计算机课程,亚利桑那州立大学将在中国推出在线硕士学历项目 纯中文授课...
  16. 气动调节阀常见故障作用方式
  17. delphi 复制到剪贴板_Delphi中的基本剪贴板操作(剪切/复制/粘贴)
  18. HP VA7110 硬盘故障重建失败处理
  19. acer p3 171 装android,只要轻薄 从Acer P3看便携本如何更新
  20. eclipse中tomcat简单配置

热门文章

  1. 六、应用层(五)万维网(www)
  2. 重装XP系统后桌面图标有蓝色阴影的恢复方法--win10专业版
  3. Task04:集合运算
  4. Go语言初级使用学习笔记1
  5. 脉诊之脉象——平脉,常见病脉,七绝脉
  6. 【商城应用】用户余额体系设计
  7. android机器人kibot,360儿童机器人app
  8. BetterZip使用教程——快速导入压缩包
  9. 一家传统制造企业的上云之旅,怎样成为了数字化转型典范?
  10. 如何创建一个React项目(超简单)