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 ...
随机推荐
- woocommerce分类页产品数量修改
我们用woocommerce建商城,不同的模板分类页产品数量不同,如果想要显示更多或更少的数量要如何修改呢?很简单,一行代码就能搞定!打开当前主题的function.php文件,加入如下代码,把18改 ...
- cmd 计划任务
Schtasks /create /sc ScheduleType /tn TaskName /tr TaskRun [/s Computer [/u [Domain\]User [/p Passwo ...
- nginx proxy_pass 指令
nginx proxy_pass 指令 文档 Nginx 官方文档 https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pa ...
- LCD12864
/* LCD Arduino PIN1 = GND PIN2 = 5V RS(CS) = 8; RW(SID)= 9; EN(CLK) = 3; PIN15 PSB = GND; */ #includ ...
- LeetCode 1213. Intersection of Three Sorted Arrays
原题链接在这里:https://leetcode.com/problems/intersection-of-three-sorted-arrays/ 题目: Given three integer a ...
- ajax有哪些方法可以实现跨域?他们都有哪些局限性?
1.服务器端代理:在服务器端设置一个代理,由服务器端向跨域下的网站发出请求,再将请求结果返回给前端. 属于后端的技术,实现起来最麻烦. 2.jsonP,只支持get方式调用. 3.XHR2(cors) ...
- BootStrap Table 合并单元格
为了更直观展示表格的一大堆乱七八糟的数据,合并单元格就派上用场: 效果: 贴上JSON数据(后台查询数据一定要对合并字段排序): [ { "city": "广州市&quo ...
- 洛谷P5021 赛道修建
题目 首先考虑二分,然后发现最小长度越大的话,赛道就越少.所以可以用最终的赛道个数来判断长度是否合理.问题转化为给定一个长度,问最多有多少条互不重叠路径比这个给定长度大. 考虑贪心,毕竟贪心也是二分c ...
- gcc O2优化选项对内嵌汇编以及函数递归调用的影响
学习和使用c这些年来,很多方面都未深入研究过,就如脱离了IDE后,我可能连编译一个c文件的命令都写不出来. 最近需要在c中内嵌汇编解决问题,参考网上相关的资料写了一段汇编代码,在测试的时候时好时坏,找 ...
- JavaScript 一些实用技巧
快速创建从0到n的数字 let arr1 = [...(new Array(n)).keys()]; let arr2 = Array.from({length:n},(v, k) => k); ...