今日内容:
一: 模式:
MVC: model(模型:存取数据) + view(视图: 信息展示) + controller(逻辑控制) //
MTV :借鉴MVC: model(模型: 存取数据) + templates(模板: 展示信息) + views(业务逻辑)
二: 模板的基本用法
1, {{变量}} >>> 获取变量的属性,方法
2,{% for/if/ %}
3, 过滤器 {{ value|filter_name:参数 }}
内置: default 提供默认值 {{kong|default:'nothing'}}
date日期格式化 {{now|date:‘Y-m-d H:i:s’}}
settings设置全局日期格式化
USE_L10N = False
DATATIME_FORMAT = Y-m-d H:i:s’
safe: 不进行转义:告诉django内容安全, 原样放上去, 不进行字符串化
自定义: filter
1. 在APP下创建一个叫templatetags的python包, 不能变, 必须是包,名字也不能变
2. 在包中创建一个py文件,for E: myfilters
3. py文件中写代码
导入模板: from django import template
register = template.Library() # 变量名固定写法
写函数@register.filter # 必须加这个装饰器
def add_dsb(value, arg): # 只能最多传一个参数
return '{}-{}'.format(value, arg)
模板中导入文件, {% load my_filter %}
使用: {{ name|add_dsb:'very_dsb' }}
4.标签:
for: 循环
forloop.counter: 当前循环的索引值(从1开始)
forloop.counter0: 当前循环的索引值(从0开始)
forloop.reverconter: 当前循环的倒序索引值(从1开始)
forloop.reverconter0: 当前循环的倒序索引值(从1开始)
forloop.first: 循环第一次》》布尔值
forloop.last: 循环是不是最后一次: 》》布尔值
forloop.parentloop: 本层本次循环时候外出循环字典属性
{{% csrf_token %} : 在form表达中添加这个可以提交POST请求
simple_tag : 自定义filter
定义: @register.simple_tag(name="plus")
def plus(a, b, c):
return "{} + {} + {}".format(a, b, c)
使用: {% load app01_demo % } # 导入
{# simple tage #}>>> { % plus '1' '2' '3' % }
5. 母版 和继承:
一个普通的HTML文本, 将多个页面公共的内容提取出来, 在页面定义多个block
a:注意事项:
{% extends ‘base.html’ %} 必须写在第一行, 上面不写内容
b. 要修改的内容写在block标签中, 写在外面不显示
c. {% extends 'base.html' %} '文件必须带上引号, 否则可能当作变量'
d. 定义多个block , 定义CSS JS 两个引入标签
6. 组件: 把多个页面公用的html代码放在一个html文件中 》》》组件 nav.html
使用方法: {% include 'nav.html' %}
7. 静态文件
{% load static %} :导入别名路径
<img src="{% static "images/hi.jpg" %}" alt="Hi!" />
{% static '静态文件相对路径' %} ——》获取到别名, 后面紧跟参数进行拼接
{% get_static_prefix %}plugins/bootstrap/css/bootstrap.css # 获取别名
8 . 自定义inclusion_tag: 可以传递多个参数