Django基础之路由(urls)层
Django基础之路由(urls)层
无名分组与有名分组
无名分组
对于正则加括号,会将括号内匹配到的内容当做位置参数传递给后面的视图函数test(request,args)
eg:
url(r'^test/(\d+)/',views.test)
有名分组
就是给正则起个别名
会将括号内匹配到的内容当做关键字参数传递给后面的视图函数test(request,month=123)
这个month也可以是其他值
eg:
url(r'^test/(?P<month>\d+)/',views.test)
注意
有名分组和无名分组不能结合使用,但是无名和有名分组单独使用的情况下可以使用多次,就是一个里面有多个分组
eg:
url(r'^test/(\d+)/(\d+)/',views.test)
url(r'^test/(?P<month>\d+)/(?P<month>\d+)/',views.test)
反向解析
根据某一个东西,动态解析出一个结果,该结果可以直接访问对应的url
怎么去做呢?
答:给路由与视图函数对应关系起一个别名,后续根据这个别名就能够动态解析出对应的url
eg:
url(r^test_add/',testadd)
前段解析
{%url 'xxx' %}
后端解析
导入模块
import revers
url = revers('xxx')
无名分组反向解析
url(r'^test_addsajdsjkahdkjasjkdh/(\d+)/', views.testadd,name='xxx')
前段解析
在模版login.html文件中,反向解析的使用
<a href="{% url 'xxx' 1 %}">222</a>
后端解析
在views.py中,反向解析的使用:
url = reverse('xx',args=(1,))
有名分组的反向解析
url(r'^test_addsajdsjkahdkjasjkdh/(?P<year>\d+)/', views.testadd,name='xxx')
前段解析
<a href="{% url 'xxx' 1 %}">222</a>
<a href="{% url 'xxx' year=1 %}">222</a>
后端解析
url = reverse('xxx',args=(1,))
路由分发

eg:Django有100个app,那urls里面的代码过于冗长
Django里面的APP可以有自己的templates文件夹,static文件夹,和urls.py文件
总路由项目名下的urls.py不再做路由与视图函数对应关系了,而是做一个中转站,只负责将请求分发到不同的app中,在app中做视图函数的对应关系
具体操作:
from django.conf.urls import url,include
url(r'^app01/',include(app01_urls)),
url(r'^app02/',include(app02_urls))
名称空间
当我们的项目下创建了多个app,并且每个app下都针对匹配的路径起了别名,如果别名存在重复,那么在反向解析时则会出现覆盖,但是我们尽量不要重名
总路由
url(r'^app01/',include('app01.urls',namespace='app01'))
url(r'^app02/',include('app02.urls',namespace='app02'))
各个app的路由
print(reverse('app01:index'))
print(reverse('app02:index'))
伪静态
将动态网页假装成是静态的,这样做的目的是为了提高百度等搜索引擎的SEO查询优先级
搜索引擎在收录网站的时候,会优先手撸看上去像是静态文件的资源
无论你怎么使用伪静态进行优化,都干不过RMB玩家
哈哈哈!!!
虚拟环境
通常针对不停地项目,只会安装该项目所用到的,用不到的一概不装
不同的项目有专门的解释器环境与之对应
每创建一个虚拟环境,就类似于重新下载了一个python解释器
实际功能中针对不同而项目,有一个交叫requestments.txt,该文件列出来的是一个个该项目需要用到的模块名和版本号
eg:
Django=1.11.11
nginx
后期会通过命令直接会去下载该文件内所有的模块及对应的版本
虚拟环境不要创建太多个,会占硬盘资源的操作
Django1版本和Django2 版本的区别
Django1.x
区别一:
urls.py中1.x用的是url,2.x用的是path
2.x中的第一个参数不支持正则表达式,些写什么就匹配什么
2.x里面还有re_path,这个re_path就好比1.x中的url
区别二:
django2.x默认支持一下5种转换器(Path converters)
str,匹配除了路径分隔符(/)之外的非空字符串,这是默认的形式
int,匹配正整数,包含0。
slug,匹配字母、数字以及横杠、下划线组成的字符串。
uuid,匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。
path,匹配任何非空字符串,包含了路径分隔符(/)(不能用?)
例如
path('articles/<int:year>/<int:month>/<slug:other>/', views.article_detail)
# 针对路径http://127.0.0.1:8000/articles/2009/123/hello/,path会匹配出参数year=2009,month=123,other='hello'传递给函数article_detail
Django基础之路由(urls)层的更多相关文章
- Django基础之视图(views)层、模板层
目录 Django基础之视图(views)层.模板层 JsonResponse 向前端返回一个json格式字符串的两种方式 重写Django中的json的某个方法 form表单上传文件 FBV与CBV ...
- Django基础之模型(models)层(上)
目录 Django基础之模型(models)层 单表查询 必知必会13条 神奇的双下划线查询 多表查询 外键的字段的增删改查 表与表之间的关联查询 基于双下划线的跨表查询(连表查询) 补充知识 Dja ...
- Django基础之路由层
内容概要 路由匹配 无名有名分组 反向解析 无名有名分组反向解析(难理解) 路由分发 名称空间 伪静态 内容详细 1 路由匹配 urls.py url()方法第一个参数其实是一个正则表达式 第一个参数 ...
- Django基础(路由、视图、模板)
目录导航 Django 路由控制 Django 视图层 Django 模版层 Django 路由控制 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用 ...
- Django基础之路由系统
Django的路由系统 Django 1.11版本 URLConf官方文档 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表. ...
- Django基础三之路由、视图、模板
Django基础三之路由.视图.模板 目录 Django基础三之路由.视图.模板 1. Django 请求和返回周期 1.1 路由层之路由匹配 1.2 有名分组 1.3 无名分组 2. 反射解析 3. ...
- django基础2: 路由配置系统,URLconf的正则字符串参数,命名空间模式,View(视图),Request对象,Response对象,JsonResponse对象,Template模板系统
Django基础二 request request这个参数1. 封装了所有跟请求相关的数据,是一个对象 2. 目前我们学过1. request.method GET,POST ...2. reques ...
- day 69 Django基础五之django模型层(一)单表操作
Django基础五之django模型层(一)单表操作 本节目录 一 ORM简介 二 单表操作 三 章节作业 四 xxx 一 ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现 ...
- day 66 Django基础二之URL路由系统
Django基础二之URL路由系统 本节目录 一 URL配置 二 正则表达式详解 三 分组命名匹配 四 命名URL(别名)和URL反向解析 五 命名空间模式 一 URL配置 Django 1.11 ...
随机推荐
- Jmeter(十一)函数助手
可以在JMeter的选项菜单中找到函数助手对话框 我们可以从下拉列表中选择一个函数,并为其参数设定值.如图,表格的左边一列是函数参数的简要描述,右边一列是供用户填充参数的值.不同函数要求的参数也不同. ...
- VirtualBox更改虚拟硬盘 VDI文件空间大小的方法
cmd执行 C:\Oracle\VirtualBox\VBoxManage.exe modifyhd
- centos调整屏幕亮度
笔记本安装centos6.5后亮度无法通过键盘快捷键调节,可以通过安装软件来调节. 安装:yum install xgamma 设置亮度:xgamma -gamma n( 0.1 < n < ...
- 微服务一键启动脚本shell没有环境变量的
#!/bin/bash#######################################################export JAVA_HOME=/root/data/app/jd ...
- fmri格式相关简介————转自网络
转自莫毕业 目前,脑成像数据主要有DTI.fmri.3D三种模态.这些数据在分析前都要进行格式转换,不同公司的扫描仪存储格式也不尽相同.脑成像处理软件也很多,不同软件使用的格式也不一样,所以数据转换是 ...
- 利用uniGUI中的TUniPageControl实现多页面
远行效果: 实现代码: procedure TfrmMain.OpenForm(Caption,FormClassName:string);var i:integer; sheet:TUniTab ...
- js闭包解决多个点击事件
<script> var severalObj=window.document.getElementsByName("button"); for(var i=0;i&l ...
- ASP.NET Core开发者指南(转发)
ASP.NET Core开发者指南 2019年ASP.NET Core开发者指南: 你可以在下面找到一张图,该图展示了你可以选取的路径及你想学习的库,从而成为一名 ASP.NET Core 开发者.& ...
- 七十八:flask.Restful之flask-Restful标准化返回参数以及准备数据
对于一个视图函数,可以指定好数据结构和字段用于返回,以后使用ORM模型或者自定义的模型的时候,它会自动获取模型中相应的字段,生成json数据,然后再返回给前端,这需要导入flask_restful.m ...
- centos6.5 内核 :2.6.32 升级内核
问题: CentOS 6.5 的内核一般都是2.6,在2.6的内核下,Docker运行会比较卡,所以一般会选择升级到更高版本,本次教程升级版本为4.4.102 一.升级内核 1.查看内核版本 u ...