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浏览器,输入某一个网站的地址,然后转到该网址,在浏览器中得到该网址的页面.从这个场景中我们可以抽象出 ...
随机推荐
- MIP技术交流分享(3月9日)
3月9日上周四下午,MIP 团队工程师与去哪儿酒店云.众荟的 Web 前端工程师进行了一次面对面的技术交流. 在这次交流中,MIP 工程师主要分享了 MIP 技术原理,MIP 加速原理,以及 MIP ...
- dotnet-warp && NSSM 部署 .net core 项目到 windows 服务
如果你想将 .net core 项目以服务的形式部署到 windows 系统,希望本篇文章能够让你少走弯路 dotnet-warp 安装使用 dotnet-warp 是一个全局的.NET Core 工 ...
- 死磕 java集合之ArrayBlockingQueue源码分析
问题 (1)ArrayBlockingQueue的实现方式? (2)ArrayBlockingQueue是否需要扩容? (3)ArrayBlockingQueue有什么缺点? 简介 ArrayBloc ...
- 面试题-浅谈JavaScript中的This指向问题
各位小伙伴在面试中被面试官问道this指向问题一定不少吧,同时还被问道apply,call和bind的用法区别,现在,就来简单的聊一聊this到底指向何方. 1.基本概念 MDN的官方解释:与其他语言 ...
- Java集合详解8:Java集合类细节精讲
今天我们来探索一下Java集合类中的一些技术细节.主要是对一些比较容易被遗漏和误解的知识点做一些讲解和补充.可能不全面,还请谅解. 本文参考:http://cmsblogs.com/?cat=5 具体 ...
- maven私服上传jar包
将一下脚本保存在.bat文件执行,红色部分按实际情况修改: @echo off set groupId=com.xxxset artifactId=xxxset version=0.0.1set ja ...
- MAC中使用APICloud同步代码错误解决办法
在MAC上使用APICloud同步代码时出现错误,其实就是git位置的问题,简单点就是把路径映射下. 问题提示: Can't locate SVN/Core.pm in @INC (you may n ...
- git入门手册:git的基本安装,本地库管理,远程上传
前言: git是分布式的版本库控制系统,它能方便你将自己的代码寄存于远程服务器上,从而实现集体合作开发.git有GUI 图形界面,然而使用终端命令仍是主流.以下基于Ubuntu系统操作git(其方式也 ...
- 原生的 django 分页
原始的 django 分页 # 基本 写法 class Paginator(object): def __init__(self, object_list, per_page, orphans=0, ...
- linux 常用监控命令备注
1.top 功能:查看系统各进程资源占用情况 备注:输入P后按照CPU占用排序显示:输入M后安装内存消耗排序 2.free 功能:查看内存占用情况 备注:无 3.df 功能:查看硬盘使用情况 备注:增 ...