python MVC、MTV 框架介绍 Django 模板系统常用语法
Django 框架简介
一.MVC框架和MTV框架
1.MVC 全名Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分.
优势:
耦合性低
重用性高
生命周期成本低
结构:
模型(Model) 与数据库相关 存取数据
视图(View) 处理业务逻辑 展示信息
控制器(Controller) 获取用户信息 给模型传递指令
2.Django的MTV 全名Model Template View 借鉴了MVC框架的思想,也是分成三部分,来降低各个部分之间的耦合性。
结构:
模型(Model) 负责业务对象与数据库的对象(ORM)
模板(Template) 负责如何把页面展示给用户
视图(view) 负责业务逻辑,并在适当的时候调用Model和Template
Django还有一个urls分发器,它的作用是将一个个URL的页面请求分发给不同的view处理,view再调用相应的Model和Template
Django模板系统
常用语法:
Django模板中有两种特殊符号
{{}} 表示变量,在模板渲染的时候替换成值,
{%%} 表示逻辑相关的操作
{{变量名}} 变量名由字母数字和下划线组成
点 (.) 在模板语言中有特殊含义,用来获取对象的相应属性值.
views中代码如下:
def test(request):
l=[11,22,33]
d={'name':'alex'}
class Person(object):
def __init__(self,name,age):
self.name=name
self.age=age
def dream(self):
return "{} isdreaming to be poorer".format(self.name)
Alex=Person(name='a',age=3000)
Egon = Person(name="Egon", age=9000)
Eva_J = Person(name="Eva_J", age=18)
per_list=[Alex,Egon,Eva_J]
return render(request,'test.html',{'l_list':l,'d':d,'per_list':per_list})
html中:
{{ l_list.1 }} --> 22
{{ d.name }} -->alex
{{ per_list.0.name }} -->取索引为0的对象的name属性
{{ per_list.0.dream }} -->取索引为0的对象的dream属性 ( .操作只能调用不带参数的方法)
注意:
当模板系统遇到一个(.)时,会按照如下的顺序去查询
1.在字典中查询
2.属性或方法
3.数字索引
Filters 过滤器,用来修改变量的显示结果。
语法: {{value|filter_name:参数}}
'|'左右没有空格没有空格没有空格
1.default
{{value|default:"nothing"}}
如果value值没传的话就显示nothing 如value是以下几种:none {} [] () "".
注意:
TEMPLATES的OPTIONS可以增加一个选项:string_if_invalid:'找不到',可以替代default的的作用。
2.filesizeformat
将值格式化为一个 “人类可读的” 文件尺寸
{{ value|filesizeformat }} 如果 value 是 123456789,输出将会是 117.7 MB。
3.add
给变量加参数
数字
{{value|add:'2'}} {{ n|add:"2"}} ----6 n=4
列表
{{ l_list|add:s }} l_list=[11,22,33] s=[1,3,4]}}----[11, 22, 33, 1, 3, 4]
4.lower 小写
{{ value|lower }}
5.upper 大写
{{value|upper}}
6.title 标题
{{value|title}}
7.ljust 左对齐 {{ value|lower }} p标签
8.rjust 右对齐 {{ value|rjust:"10" }} p标签
9.center 居中 {{ value|center:"15" }} p 标签
10.length
{{value|length}} 返回value的长度,如 value=['a', 'b', 'c', 'd']的话,就显示4.
11.slice 切片
{{value|slice:"2:-1"}}
12.first 取第一个元素
{{value|first}}
13.last 取最后一个元素
{{ value|last }}
14.join
使用字符串拼接列表。同python的str.join(list)。
{{ value|join:" // " }}
15.truncatechars
如果字符串字符多于指定的字符数量,那么会被截断。截断的字符串将以可翻译的省略号序列(“...”)结尾。
参数:截断的字符数
{{ value|truncatechars:9}} 加上...一共显示九个
16.date 日期格式化
{{ value|date:"Y-m-d H:i:s"}}
views:
import datetime
time=datetime.datetime.now()
17.safe
Django的模板中会对HTML标签和JS等语法标签进行自动转义,原因显而易见,这样是为了安全。
但是有的时候我们可能不希望这些HTML元素被转义,比如我们做一个内容管理系统,
后台添加的文章中是经过修饰的,这些修饰可能是通过一个类似于FCKeditor编辑加注了HTML修饰符的文本,
如果自动转义的话显示的就是保护HTML标签的源文件。为了在Django中关闭HTML的自动转义有两种方式,
如果是一个单独的变量我们可以通过过滤器“|safe”的方式告诉Django这段代码是安全的不必转义。
views :
'a_html': '<a href="https://www.baidu.com/">点击</a>'
{{ a_html|safe }} 可以点击
自定义filter
自定义过滤器只是带有一个或两个参数的python函数
变量(输入)的值 - -不一定是一个字符串
参数的值 - 这可以有一个默认值,或完全省略
在过滤器{{var | foo:“bar”}}中,过滤器foo将传递变量var和参数“bar”。
自定义的filter代码文件摆放位置
app名 /templatetags 在app下新建一个package / 建一个存放自定义filter 的py文件
编写自定义filter
from django import template
register=template.Library()
@register.filter 一定要加 一定要加
def fill(value,arg):
return value.replace("",arg)
@register.filter(name="addSB")
def add_sb(value):
return "{}SB".format(value)
使用自定义
{# 先导入我们自定义filter那个文件 #}
{% load app01_filters %}
{# 使用我们自定义的filter #}
{{ somevariable|fill:"__" }}
{{ d.name|addSB }}
python MVC、MTV 框架介绍 Django 模板系统常用语法的更多相关文章
- python的Web框架:Django路由系统以及模板导入
Django的路由系统 当一个请求来到时 当一个请求来到时 1.首先到项目目录下的urls.py(根URLconf模块)中,查找路由规则: 2.根URELcof模块,里面定义了 urlpatterns ...
- python的Web框架,Django模型系统二,模型属性,及数据库进阶查询
原始数据接上篇文章来操作.可能需要查看后才能懂.点击这里查看 1.常用的模型字段类型 官方文档:https://docs.djangoproject.com/en/2.1/ref/models/fie ...
- python的Web框架,Django模板变量,过滤器和静态文件引入
HTML模板的路径查找 在setting中设置查找路径: #默认的查找在此处填写,优先级最高,为在manage.py的同级路径中,添加(常规是template)文件夹,在(template)文件夹中配 ...
- python的Web框架,Django模板标签及模板的继承
模板标签 在传递数据的时候,会有大量的数据展示在浏览器上,而数据会是动态变化的,在html的编写中,数据也是需要动态的,而不能是写死的,如果动态展示呢. 给定的例子数据 views传递数据给html ...
- Django 模板系统
Django模板系统 常用语法 {{}} 变量相关 {%%} 逻辑相关 变量 格式 {{ 变量名 }} 命名规则 包括任何字母数字以及下划线 ("_")的组合 变量名称中不能有空格 ...
- Python学习(二十八)—— Django模板系统
转载自http://www.cnblogs.com/liwenzhou/p/7931828.html Django模板系统 官方文档 一.常用语法 只需要记两种特殊符号: {{ }}和 {% %} ...
- django模板系统基础
模板系统基础Django模板是一个string文本,它用来分离一个文档的展现和数据 模板定义了placeholder和表示多种逻辑的tags来规定文档如何展现 通常模板用来输出HTML,但是Djang ...
- Django模板系统(非常详细)(后台数据如何展示在前台)
前面的章节我们看到如何在视图中返回HTML,但是HTML是硬编码在Python代码中的这会导致几个问题:1,显然,任何页面的改动会牵扯到Python代码的改动网站的设计改动会比Python代码改动更频 ...
- (转)Django学习之 第四章:Django模板系统
前面的章节我们看到如何在视图中返回HTML,但是HTML是硬编码在Python代码中的 这会导致几个问题: 1.显然,任何页面的改动会牵扯到Python代码的改动 网站的设计改动会比Python代码改 ...
随机推荐
- Go语言--基础语法笔记
### 换了工作,好久没有添加新文章了,本来是想更新到github上的,想想还是在博客里放着,感觉以前的文章都没有很仔细,都只是问题处理的记录, 以后想新加一些整理的笔记也好 ### 主要内容 2.1 ...
- NOIP2018Day1T1 铺设道路
题目描述 春春是一名道路工程师,负责铺设一条长度为 \(n\) 的道路. 铺设道路的主要工作是填平下陷的地表.整段道路可以看作是 \(n\) 块首尾相连的区域,一开始,第 \(i\) 块区域下陷的深度 ...
- STM32 USB 鼠标+键盘 串口控制
*MOS0101000000# 鼠标左键按下 *MOS0102000000# 鼠标右键按下 *MOS0103000000# 鼠标中键按下 *MOS0100000000# 鼠标抬起 *MOS01000a ...
- Java后端学习,推荐书籍和学习路线
最近在学习Java和全栈开发,推荐一些有用的书籍 书架主要针对Java后端和全栈开发用的 书籍介绍 <Spring Boot 2.0企业级应用开发实战> 本书深入浅岀地讲解了 Spring ...
- CocosCreator脚本中向依赖的组件赋值后, 被依赖的组件没有取到值的问题!
问题描述: 两个节点parent&child(其中都包含脚本组件), parent脚本组件依赖了child组件, 节点关系如下图: parent脚本内容如下: child脚本内容如下: 预览时 ...
- 浅谈Python装饰器
一.概念 装饰器是Python语言中的高级语法.主要的功能是对一个函数.方法.或者类进行加工,作用是为已经存在的对象添加额外的功能,提升代码的可读性.装饰器是设计模式的一种,被用于有切面需求的场景,较 ...
- GitHub上受欢迎的Android UI Library
GitHub上受欢迎的Android UI Library 内容 抽屉菜单 ListView WebView SwitchButton 按钮 点赞按钮 进度条 TabLayout 图标 下拉刷新 Vi ...
- c# MD5及盐值加密
using System;using System.Collections.Generic;using System.Linq;using System.Security.Cryptography;u ...
- keepalived介绍及工作原理
keepalived介绍keepalived观察其名可知,保持存活,在网络里面就是保持在线了,也就是所谓的高可用或热备,它集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防 ...
- SQL反模式学习笔记1 开篇
什么是“反模式” 反模式是一种试图解决问题的方法,但通常会同时引发别的问题. 反模式分类 (1)逻辑数据库设计反模式 在开始编码之前,需要决定数据库中存储什么信息以及最佳的数据组织方式和内在关联方式. ...