Django---MTV和MVC的了解,Django的模版语言变量和逻辑,常见的模板语言过滤器,自定义过滤器,CSRF了解,Django的母版(继承extends,块block,组件include,静态文件的加载load static),自定义simple_tag和inclusion_tag
Django---MTV和MVC的了解,Django的模版语言变量和逻辑,常见的模板语言过滤器,自定义过滤器,CSRF了解,Django的母版(继承extends,块block,组件include,静态文件的加载load static),自定义simple_tag和inclusion_tag
一丶MTV和MVC
MTV和MVC是一种软件架构,实现功能一样
MTV:在Django框架中使用
Model(模型):负责业务对象与数据库的对象(ORM)
Template(模版):负责如何把页面展示给用户
View(视图):负责业务逻辑,并在适当的时候调用Model和Template
此外,Django还有一个urls分发器,它的作用是将一个个URL的页面请求分发给不同的view处理,view再调用相应的Model和Template

MVC:软件开发规范
MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller),具有耦合性低、重用性高、生命周期成本低等优点。
M: model 模型 操作数据库
V: view 视图 展示页面 HTML
C: controller 控制器 调度 业务逻辑

二丶常用语法
在Django框架模板中存在两种特殊的标记:
{{ 变量 }} : 表示获取变量的值
{% 逻辑 %} : 表示逻辑相关操作
变量:
{{ 变量 }},由字母和下划线组成.
. (点) 在模版语言中有特殊的意义,可获取对象的属性值,也可调用对象的方法.
#
def index(request):
res = {
# 传数字
'num': 123,
# 传字符串
'string1': '中文字符',
'string2': 'abcd',
# 传列表
'lis': ['熊大', '熊二', '熊三'],
# 传字典
'dic': {'name': '张哥', 'age': 33},
# 传对象
'p1': Person('Pig', 32)
}
return render(request, 'index.html', res)
# html页面
<h1>使用 { {变量} } 展示数据</h1>
<p>{{ num }}</p>
<p>{{ string1 }}</p>
<p>{{ string2 }}</p>
# <!--支持.的形式根据索引进行取值-->
<p>{{ string2.0 }}</p>
<p>{{ lis }}</p>
# <!-- 列表也支持.的形式根据索引进行取值 -->
<p>{{ lis.1 }}</p>
# <!--支持字典的所有方法,不需要加(),也支持.的形式取键对应的值-->
<p>{{ dic }}</p>
<p>{{ dic.name }}</p>
<p>{{ dic.keys }}</p>
<p>{{ dic.values }}</p>
# <!--对象单独的是内存地址,-->
<p>{{ p1 }}</p>
# <!--对象的属性-->
<p>{{ p1.name }}</p>
<p>{{ p1.age }}</p>
# <!--对象的方法,不需要加()-->
<p>{{ p1.talk }}</p>
# <!--若变量不存在,不会报错,得到是一个空的字符串.-->
<p>{{ xxx }}</p>
#PS:
当模板系统遇到一个(.)时,会按照如下的顺序去查询:
1.在字典中查询
2.属性或者方法
3.数字索引
{# .操作只能调用不带参数的方法 #}
{{ person_list.0.dream }}
Filter过滤器:
Django提供过滤器,对展示的字符串进一步筛选
语法: {{ value|filter_name:参数 }}
注意: ':'左右没有空格,出现空格就报错
### default 默认
# 语法:{{ value|default:"nothing"}}
# value的值没有传递,或者为空类型/None时,都会调用default默认值
# 一旦settings配置文件设置了:TEMPLATES的OPTIONS可以增加一个选项:string_if_invalid:'找不到',可以替代default的的作用.
# ps:调用string_if_invalid的优先级高于default,如果设置的变量不存在,调用string_if_invalid对应的值
<p>
{{ xxx|default:'aaa' }}
</p>
### filesizeformat 格式化数据大小(例如 '13 KB', '4.1 MB', '102 bytes',最大到PB)
# 语法:{{ value|filesizeformat }}
<p>
{{ 1024|filesizeformat }} #1.0 KB
</p>
### add 给变量做 +法,也具有拼接效果. 字符串拼接数字,列表拼接列表
# 语法:{{ value|add:"2" }}
<p>
{{ num|add:"2" }} # num=10 加2--->12
</p>
<p>
{{ lis|add:lis}} #列表拼接
</p>
<p>
{{ string1|add:'123456'}} # 字符串拼接数字
</p>
### lower 大写
# 语法:{{ value|lower }}
<p>
{{ string2|lower }}
</p>
### upper 大写
# 语法: {{ value|upper}}
<p>
{{ string2|upper }}
</p>
### title 标题,首字母大写
# 语法:{{ value|title }}
<p>
{{ string2|title }}
</p>
### ljust 左对齐, rjust 右对齐 ,center 居中
#语法:
"{{ value|ljust:"10" }}"
"{{ value|rjust:"10" }}"
"{{ value|center:"15" }}"
<p>
"{{ string1|ljust:"10" }}"
<br>
"{{ string1|rjust:"10" }}"
<br>
"{{ string1|center:"1" }}"
</p>
### length 获取数据的长度
# 语法: {{ value|length }}
<P>
{{ string1|length }}
</P>
### slice 切片 , 支持正向 也支持反向
# 语法:{{value|slice:"2:-1"}}
<p>
{{ lis }}
{{ lis|slice:'0:2' }} # 切除来两个
{{ lis|slice:'-1::-1' }} # 反向切出来所有
</p>
### first 取第一个元素
# 语法: {{ value|first }}
<p>
{{ string1 }}
{{ string1|first }} # 取第一个元素
</p>
### last 取最后一个元素
# 语法: {{ value|last }}
<p>
{{ string1 }}
{{ string1|last }} # 取第一个元素
</p>
### join 字符串拼接列表
# 语法: {{ value|join:" // " }}
<p>
{{ lis|join:'^^' }}
</p>
### truncatechars 字符串字符多于指定的字符数量,会被截断。截断的字符串将以省略号(“...”)结尾.
# 参数:截断的字符个数
# 语法:{{ value|truncatechars:9}}
<p>
{{ '难念的经爱上空间的撒谎加括号大数据库很快就打'|truncatechars:10 }} # 字符分隔
</p>
<p>
{{ '难念的 经爱上 空间的 撒谎加括 号大数据库很快就打'|truncatewords:3 }} #空格分隔,
</p>
### date 日期格式化
# 语法: {{ value|date:"Y-m-d H:i:s"}}
<p>
{{ now|date:'Y-m-d H:i:s' }} # 2019-08-28 15:45:50
</p>
# 当在settings配置文件设置以下参数时,就会更改默认时间显示的格式.就可以达到和date一样的效果
USE_L10N = False
DATETIME_FORMAT = 'Y-m-d H:i:s'
<p>
{{ now }}
</p>
### safe 告诉django不需要转义
# 文字叙述:
Django---MTV和MVC的了解,Django的模版语言变量和逻辑,常见的模板语言过滤器,自定义过滤器,CSRF了解,Django的母版(继承extends,块block,组件include,静态文件的加载load static),自定义simple_tag和inclusion_tag的更多相关文章
- django 项目运行时static静态文件不能加载问题处理
一.首先检查网页中的加载路径是否正确,如果和文件所在路径不一致,就把html改下路径 二.加载路径和文件实际路径一致,看下配置文件: STATIC_URL = '/static/'STATIC_ROO ...
- django 中静态文件项目加载问题
问题描述: django项目中创建了多个app后,每个app中都有对应的static静态文件.整个项目运行时这些静态文件的加载就是一个问题,因为整个项目我只参与了一部分,项目部署之类的并没有参与.我写 ...
- django在关闭debug后,admin界面 及静态文件无法加载的解决办法
当debug为true的时候,ALLOWED_HOSTS是跳过不管用的.所以这里需要将debug关掉,令debug=false,ALLOWED_HOSTS=[ '*' ]表示所有的主机都可以访问 开启 ...
- Web前端性能优化——如何有效提升静态文件的加载速度
WeTest 导读 此文总结了笔者在Web静态资源方面的一些优化经验. 一.如何优化 用户在访问网页时, 最直观的感受就是页面内容出来的速度,我们要做的优化工作, 也主要是为了这个目标.那么为了提高页 ...
- web前端性能优化,提升静态文件的加载速度
原文地址:传送门 WeTest 导读 此文总结了笔者在Web静态资源方面的一些优化经验. 如何优化 用户在访问网页时, 最直观的感受就是页面内容出来的速度,我们要做的优化工作, 也主要是为了这个目标. ...
- Django静态文件的加载以及STATIC_URL、 STATIC_ROOT 、STATICFILES_DIRS的区别
Djangon生产环境静态资源的处理 Django 关闭DEBUG模式后,就相当于是生产环境了. Django框架一旦作为生产环境,它的静态文件访问接口就不应该从Django框架中走,必须在Djang ...
- Django项目关闭debug模式后,静态文件无法加载的解决办法
开启内置服务器,由于项目中local_settings.py文件中的DEBUG=True,进行开发和调试一直没什么问题. 但是现在需要编写404,500等出错页面,在debug模式下出了错都会出现报错 ...
- django 项目运行时media静态文件不能加载问题处理
一.检查网页中的加载路径 如果路径不正确,首选调整html路径(当然也可以调整文件路径或修改models中upload_to路径,但是不要轻易改): 二.重点: 如果加载路径和实践路径一致,请按以下步 ...
- Django设置 DEBUG=False后静态文件无法加载
修改setting.py STATIC_URL = '/static/' STATIC_ROOT = 'static' ## 新增行 STATICFILES_DIRS = [ os.path.join ...
随机推荐
- 模型选择---KFold,StratifiedKFold k折交叉切分
StratifiedKFold用法类似Kfold,但是他是分层采样,确保训练集,测试集中各类别样本的比例与原始数据集中相同. 例子: import numpy as np from sklearn.m ...
- Leetcode周赛165
目录 找出井字棋的获胜者 思路 代码 不浪费原料的汉堡制作方案 思路 代码 统计全为 1 的正方形子矩阵 思路 代码 分割回文串 III 思路 代码 找出井字棋的获胜者 思路 模拟. 代码 class ...
- 编译3516cv500 osdrv失败解决
configure: WARNING: cannot find uuid library required for mkfs.ubifsconfigure: mtd-utils can optiona ...
- 前端(1)HTML介绍
1.1 HTML介绍 1.1Web服务本质 服务端 import socket server = socket.socket() server.bind(("127.0.0.1", ...
- js提取DOM属性和设置DOM属性值
<style type="text/css"> #div1{width:100px;height:100px;} #div2{background} </styl ...
- scannet数据集
数据集包含xyz和label信息,不包含颜色信息. 一共1513个室内场景数据(每个场景中点云数量都不一样),共21个类别的对象(0-20,总共已知类别应该是20,类别0应该是未知类别,即未标注点云) ...
- Flask常用实列化参数
Flask中实列化配置: app = Flask( __name__, template_folder=’temp’ , ...... ) >template_folder = "te ...
- Pandas之csv文件对列行的相关操作
1.Pandas对数据某一列删除 1.删除列 import pandas as pd df = pd.read_csv(file) #axis=1就是删除列 df.drop(['列名1','列名2'] ...
- 记录VUE-CLI项目创建及初始化相关
记录 创建项目 vue init webpack 项目名 配置config下的index.js的文件配置,修改相对路径和配置不打包map文件 修改build-webpack.base.conf.js, ...
- 关于getClass(),Object.class,getClassLoader的理解
1.对Class类的理解:Class类包含了类的信息,如构造方法.方法.属性,可用于反射.以下是所有方法 2.获取Class类对象的几种方法: Test test = new Test(); (1). ...