Django templates 模板的语法
MVC 以及 MTV
MVC:
M : model -->> 存取数据(模型)
V: view -->> 信息的展示(视图)
C: controller -->> 逻辑的控制(控制器)
MTV:
M: model -->> ORM操作(模型)
T: template -->> 模板(模板)
V: view -->> 业务逻辑 (视图)变量
取值顺序 : 字典Key --->> 属性--->>方法--->>索引
{{ new_name }} ——》 变量 新华出版社 字典或列表用 . 取值for循环for 标签带有一个可选的{% empty %} 从句,以便在给出的组是空的或者没有被找到时,可以有所操作。
{% for person in person_list %}{{ person.name }}
# 循环取值
{% empty %}
<p>sorry,no person here</p> # person_list 为空时 显示
{% endfor %}
if 标签 :{% if %}会对一个变量求值,如果它的值是“True”(存在、不为空、且不是boolean类型的false值),对应的内容块会输出。
{% if i > 300 %}大于{{ i }}
{% elif i == 200 %}
等于{{ i }}
{% else %}
小于{{ i }}
{% endif %}
.with:使用一个简单地名字缓存一个复杂的变量,当你需要使用一个“昂贵的”方法(比如访问数据库)很多次的时候是非常有用的
{% with total=business.employees.count %}
{{ total }} employee{{ total|pluralize }}
{% endwith %}{{ person_list.2.name }}
{% with name=person_list.2.name %}
{{ name }}
{% endwith %}
内置过滤器
{{ str|default:'返回值' }} ---->>>> 默认值
{{ str|filesizeformat }} ---->>>> 将文件大小转换为 可读的 类型
{{ str|add:'2' }} ---->>>> 给变量加参数 变量位数字 就加法运算 str 拼接
{{ str|length }} ---->>>> 返回value 的长度
{{ time|data:'Y-m-d H:i:s' }} ---->>>> 时间转换
{{ time|data }} ---->>>> 时间转换 需在 stting 中配置
{{ str|slice:'2:-1' }} ---->>>> 切片
{{ list|first }} ---->>>> 取第一个
{{ list|last }} ---->>>> 取最后一个
{{ list|join:'//' }} ---->>>> 拼接
{{ str|truncatechars:10 }} ---->>>> 截断字符串
{{ html|safa }} ---->>>> 不转义 可写入 html 标签自定义
定义filter 过滤器在APP下创建一个叫templatetags的python包; 不能变的,必须是包,名字必须是templatetags
在包中创建一个py文件 my_filters;
在py文件中写代码
from django import templateregister = template.Library() # register的名字不能改
写函数
@register.filter
def add_dsb(value, arg):
return "{}_{}".format(value, arg)给定义的函数加装饰器
@register.filter
def add_dsb(value, arg):
使用
在模板中使用:导入定义的文件
{% load my_filter %}使用过滤器
{{ name|add_dsb:'very_dsb' }}
定义simpletag
和 定义 filter 一样
@register.simple_tags
def add_data(args,**kwargs):
return "{}_{}".format("--".join(args),"".join(kwarg.values()))
自定义inclusion_tag
@register.inclusion_tag('show_li.html')
def show_li(num):
return {'num':range(1,num+1)}
写模板 show_li.html- {% for i in num %}
- {{ i }}
{% endfor %}
使用:
- 模板中导入 {% load 定义的py文件名 %}
- filter {{ 变量|函数名:参数 }}
- simple_tag {{ 变量|函数名:参数 }}
- inclusion_tag {% inclusion_tag的函数名 %}
标签
{% csrf_token %}
添加在form表单中 就可以提交POST请求
母版和继承
母版
就是一个普通的HTML文本,将多个页面公共部分的内容提取出来,在页面中定义多个block块
{% block content %}
{% endblock %}继承
在子页面中,继承母版 {% extends 'base.html' %}
可以重新书写block块中内容注意事项
{% extends 'base.html' %} 写在第一行,上面不写内容
要修改的 内容写在block块中,写在外面不显示
{% extends 'base.html' %} base.html 记得带上引号,不然当做变量去查找
定义多个block块,一般要定义上 css和js
组件include{% include 'nav.html' %}
静态文件相关
{% load static %}
{% static '静态文件相对路径' %} ——》 获取到别名,跟后面的参数进行拼接
{% get_static_prefix %} ——》 获取到别名
Django templates 模板的语法的更多相关文章
- django - Templates模板嵌套语法
模板继承 1.继承母板:{% extends '母板html文件名称' %} 2.包含子模板:{% include '子母板html 文件名' %} 模板内容分块 {% block <分块名& ...
- django templates模板
Django templates模板 HTML代码可以被直接硬编码在views视图代码中,虽然这样很容易看出视图是怎么工作的,但直接将HTML硬编码到视图里却并不是一个好主意. 让我们来看一下为什么: ...
- python - django 解决 templates 模板语言语法冲突
# 在使用某个框架时发现语法与Django的模板语法冲突了,于是找到解决方案: {% verbatim %} // 被 verbatim 包裹起来的地方是不会被 django 渲染的 {% endve ...
- Django web框架-----Django templates模板
说明:mytestsite是django框架下的项目,quicktool是mytestsite项目中的应用 一般的变量之类的用 {{ }}(变量),功能类的比如循环.条件判断是用 {% %}(标签) ...
- Django之模板层-语法:{{ }}
模版语法的深度查询(.) views.py def index(request): name = 'name' lis = [1,2,3,4,5,6] dic = {"name": ...
- Python Web框架篇:Django templates(模板)
为什么用templates? views.py视图函数是用来写Python代码的,HTML可以被直接硬编码在views.py之中.如下: import datetime def current_tim ...
- Django templates(模板)
为什么用templates? views.py视图函数是用来写Python代码的,HTML可以被直接硬编码在views.py之中.如下: import datetime def current_tim ...
- Django笔记&教程 3-3 模板常用语法
Django 自学笔记兼学习教程第3章第3节--模板常用语法 点击查看教程总目录 本文主要参考:https://docs.djangoproject.com/en/2.2/ref/templates/ ...
- Django框架----模板语法
Django模板系统 官方文档 一.什么是模板? 只要是在html里面有模板语法就不是html文件了,这样的文件就叫做模板. 二.模板语法分类 只需要记两种特殊符号: {{ }}和 {% %} 变量 ...
随机推荐
- [Noip2015PJ] 求和
Description 一条狭长的纸带被均匀划分出了 \(n\) 个格子,格子编号从 \(1\) 到 \(n\) .每个格子上都染了一种颜色 \(color_i\) 用 \([1,m]\) 当中的一个 ...
- 身份认证与加密浅谈(PKI)
利用PKI体系解决私密文件传输中一系列问题的大体思路 背景:现有A用户和B用户之间想加密传输一些秘密文件,通过什么样的技术可以确保A和B传输数据的安全性?方案:采用对称秘钥对数据进行加密传输(对称加密 ...
- spring cloud config客户端
上篇介绍了spring cloud config服务器,本篇介绍客户端.客户端主要是从config服务器获取配置信息. 代码示例 首先创建一个Maven项目,在pom.xml文件中添加依赖: < ...
- MVC四大筛选器—ActionFilter&ResultedFilter
AuthorizeFilter筛选器 在Action的执行中包括两个重要的部分,一个是Action方法本身逻辑代码的执行,第二个就是Action方法的筛选器的执行. MVC4中筛选器都是以AOP(面向 ...
- ActiveReport系列报表开发随笔收集
转自:博客园 http://www.cnblogs.com/dahuzizyd/archive/2007/04/11/ActiveReport_All.html 使用ActiveReport for ...
- Ajax实现的城市二级联动二
上一篇联动一种只是城市用ajax请求获取并渲染,这里将省份也用ajax请求并渲染 1.HTML <select id="province"> <option> ...
- 使用git push命令如何忽略不想提交的文件夹或者文件
如下场景是在window下的操作. 在使用node的时候有个node_modules文件夹很大,一般情况下不想提交,忽略的办法如: 方法一(来自评论区):直接在仓库根目录:执行命令echo 'node ...
- IntelliJ IDEA汉化步骤以及乱码解决
1.首先下载intellij idea 2017 汉化补丁 附上资源 链接: https://pan.baidu.com/s/1cHC76m 密码: q23m 2.解压该款汉化补丁到本地(我的资源不需 ...
- sqlserver配置实践
对于一套新的sqlserver服务器,我们首先要对它做一些必要的优化配置,确保在生产上比较长的时间段内可以比较稳定的,良好的运行. 新的sqlserver服务器上安装的sqlserver版本,可以选择 ...
- SQLite 知识摘要 --- 事务
在许多时候,我们在使用大数据的时候会发现,尽管sqlite数据库的执行效率已经很快了,但是还是满足不了我们的需求,这时候我们会很容易考虑到使用并发的方式去访问sqlite数据库,但是sqlite数据独 ...