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 ...
随机推荐
- $\LaTeX$数学公式大全10
$10\ Array\ environment,examples$ $\left( \begin{array}{cc} 2\tau & 7\phi-frac5{12} \\ 3\psi &am ...
- (九)C语言之scanf
- 邻居子系统 之 邻居表的初始化neigh_table_init
概述 邻居子系统支持多种实现,例如ARP,ND等,这些实现需要在其初始化的时候,调用neigh_table_init将邻居表项添加到全局邻居子系统数组中,并对实例中的字段(如hash,定时器等)进行相 ...
- link和Import区别
本篇文章重点: link引用CSS时,在页面载入时同时加载: import需要页面完全载入后加载: link支持使用javascript控制DOM去改变样式,而Import不支持 下面待我娓娓道来: ...
- SRS之TS封装PAT和PMT
1. SrsTsContext::encode_pat_pmt 在该函数中,将 PAT 和 PMT 封装到 TS Packet 中,并将这两个 TS packet 写入到 ts 文件中. /* the ...
- 【黑马JavaSE】1_1_11_IDEA、12_方法、13_重载
文章目录 1_1_11_01开发工具IntelliJ IDEA 1.3 创建包.查看包的目录结构 1.5 字体设置(File->Settings->Editor->Font) 1.6 ...
- Sql语法树示例 select username, ismale from userinfo where age > 20 and level > 5 and 1 = 1
select username, ismale from userinfo where age > 20 and level > 5 and 1 = 1 --END-2019年9月5日17 ...
- LC 274. H-Index
Given an array of citations (each citation is a non-negative integer) of a researcher, write a funct ...
- CallableStatement获得存储过程多个结果集
这里使用到的数据库为MySQL package com.dz.entity; import java.sql.*; public class Pro_inoutTest { public static ...
- java最常见的5个错误
1. Null 的过度使用 避免过度使用 null 值是一个最佳实践.例如,更好的做法是让方法返回空的 array 或者 collection 而不是 null 值,因为这样可以防止程序抛出 Null ...