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 ...
随机推荐
- docker学习-qiang
docker优势 轻量级.资源损耗少.启动快.性能高.只能运行linux系统 容器技术发展历程 1.chroot技术 新建一个子系统(拥有自己完整的系统文件) ldd /bin/ls(查看ls命令依赖 ...
- mysql的基本数据类型里几个int如下:TINYINT SMALLINT MEDIUMINT INT或INTEGER BIGINT
mysql的基本数据类型里几个int如下:类型 大小 范围(有符号) 范围(无符号) 用途 TINYINT 1字节 (-128,127) (0,255) 小整数值 SM ...
- mybatis框架的分页功能
需求说明:为用户管理之查询用户列表功能增加分页实现 列表结果按照创建时间降序排列 /** * 需求说明:为用户管理之查询用户列表功能增加分页实现 列表结果按照创建时间降序排列 * @para ...
- pointnet
无序性:虽然输入的点云是有顺序的,但是显然这个顺序不应当影响结果.点之间的交互:每个点不是独立的,而是与其周围的一些点共同蕴含了一些信息,因而模型应当能够抓住局部的结构和局部之间的交互.变换不变性:比 ...
- .Net反射在项目中的应用
案例1:项目中可能有多个DAL程序集,每个程序集使用不同的持久化技术或对应不同类型的数据库,但是它们使用同一套接口. 可以在配置文件中配置DAL程序集名称,使用反射加载程序集.创建dal对象. 这样做 ...
- 【oracle】ORA-12638
背景:换电脑时将旧电脑的ORACLE的登陆信息转到新电脑.其中有三个文件:listener.ora sqlnet.ora tnsnames.ora 解决办法:删了sqlnet.ora 原因:
- MongoDB的安装与简单使用
一.安装MongoDB的步骤 注:本教程全部统一采用hadoop用户名登录Linux系统,用户名:hadoop 密码:hadoop 首先,在Linux系统中打开一个终端,执行如下命令导入公共秘钥到 ...
- Spring---SSH整合(二)
基于Spring---SSH整合,使用SSH编写后台: User模块层 TreeNode.hbm.xml <?xml version="1.0" encoding=" ...
- IO多路复用——poll
1.基本知识 poll是Linux中的字符设备驱动中的一个函数.Linux 2.5.44版本后,poll被epoll取代.和select实现的功能差不多,poll的作用是把当前的文件指针挂到等待队列. ...
- 根据IP查询所在城市接口(查询用户所在城市)
转自:https://blog.csdn.net/liona_koukou/article/details/75646313 最近项目有用到定位用户客户端打开页面时所在的城市的需求,找到如下接口,做个 ...