模板,母版和继承
Posted surasun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模板,母版和继承相关的知识,希望对你有一定的参考价值。
1.MVC和MTV
- MVC
- C Controller : 逻辑的控制
- M Model : 存取数据
- V View : 信息的展示
- MTV
- M : model ORM操作
- T: Template 模板
- V: View 业务逻辑
2.变量
{{ 变量 }} 使用.来获相关属性和方法
标签 {% %}
3.过滤器
语法: {{ value|filter_name:参数 }} # 参数最多只有一个
- 内置过滤器
- default 提供默认值
‘|‘左右没有空格没有空格没有空格
{{ kong|default:‘nothing‘ }}
date 日期格式化
{{ now|date:‘Y-m-d H:i:s‘ }}settings中可配置全局的日期时间格式化 USE_L10N = False DATETIME_FORMAT = ‘Y-m-d H:i:s‘
- safe 不进行转义
{{ js|safe }} # 告诉Django 前面的内容是安全的,不必转义 # 设置默认值 # 未定义的变量 {{ qwe|default:‘nothing‘ }} # nothing # 空列表 {{ empty|default:‘nothing‘}} # nothing # 或者在配置文件中全局配置设置默认值 settings-->TEMPLATES-->OPTIONS-->和‘context_processors‘同级增加 ‘string_if_invalid‘:‘找不到‘ 此优先级比在变量中设置default高, 但是[]空列表不在此范畴,只适用于default # filesizeformat 文件大小单位转换 # 将值格式化为一个 “人类可读的” 文件尺寸 (例如 ‘13 KB‘, ‘4.1 MB‘, ‘102 bytes‘, 等等) {{ value|filesizeformat }} # add 相加,拼接 # 可以将‘1‘转化成数字进行相加. 若字符串无法转数字,则进行拼接. 如果是两个列表,可以合并成1个列表 {{ num|add:‘1‘ }} {{ lst|add:lst2 }} # length 显示长度 {{ lst|length }} {{ string|length }} {{ lst|add:lst2|length }} # slice 切片 {{ lst|slice:‘1:4:2‘ }} {{ lst|slice:‘-1:-4:-2‘ }} {{ lst|first }} {{ lst|last }} # 截断 {{ long_str|truncatechars:9 }} 只显示9个字符,其中包括...占3位, 也就是6个字符,剩下的内容用...表示省略
- default 提供默认值
- 自定义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‘ }}
- 导入定义的文件
- 定义
4.标签
{% csrf_token %}
添加在form表单中 就可以提交POST请求
5.母版和继承
- 母版
就是一个普通的html文本,将多个页面公共部分的内容提取出来,在页面中定义多个block块
{% block content %}
{% endblock %}- 继承
在子页面中,继承母版 {% extends ‘base.html‘ %}
可以重新书写block块中内容 - 注意事项
{% extends ‘base.html‘ %} 写在第一行,上面不写内容
- 要修改的 内容写在block块中,写在外面不显示
- {% extends ‘base.html‘ %} base.html 记得带上引号,不然当做变量去查找
- 定义多个block块,一般要定义上 css和js
- 继承
6.组件
把多个页面公用的HTML代码放在一个HTML文件中 —— 》组件 nav.html
使用: {% include ‘nav.html’ %}
7.静态文件相关
{% load static %}
{% static ‘静态文件相对路径‘ %} ——》 获取到别名,跟后面的参数进行拼接
{% get_static_prefix %} ——》 获取到别名
<link rel="stylesheet" href="{% get_static_prefix %}plugins/bootstrap-3.3.7/css/bootstrap.css">
8.自定义inclusion_tag
以上是关于模板,母版和继承的主要内容,如果未能解决你的问题,请参考以下文章
django模板语言中的extends,block和include