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 }}
-
.with:使用一个简单地名字缓存一个复杂的变量,当你需要使用一个“昂贵的”方法(比如访问数据库)很多次的时候是非常有用的
{% with total=business.employees.count %}
{{ total }} employee{{ total|pluralize }}
{% endwith %}
{{ person_list.2.name }}
{% with name=person_list.2.name %}
{{ name }}
-
内置过滤器
{{ 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):
使用
在模板中使用: -
导入定义的文件
-
使用过滤器
{{ 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 %}
使用:
- 模板中导入
- filter {{ 变量|函数名:参数 }}
- simple_tag {{ 变量|函数名:参数 }}
- inclusion_tag
标签
{% csrf_token %}
添加在form表单中 就可以提交POST请求
母版和继承
母版
就是一个普通的HTML文本,将多个页面公共部分的内容提取出来,在页面中定义多个block块
{% block content %}-
继承
在子页面中,继承母版 {% 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 %} ——》 获取到别名
-