内容来源于【2020 最新python教程】第五部分:Django框架课程教学笔记和maple-shaw博客笔记
母版和继承
母版
- 一个页面中包含多个页面的公共部分(base.html,母板名字自己随便定义)
- 在页面中定义多个block块,让子页面进行覆盖
注:在子页面中如果不谢block块,则使用模板中写好的block快
继承
- {% extends ‘母版的名字’ %}
- 重新复写block块
注:- {% extends ‘母版的名字’ %}中的母版的名字必须带引号,不加引号则被当成变量处理;
- {% extends ‘母版的名字’ %}语句写在第一行,上面不再写内容;
- 要显示的内容要写在block块里;
- 多写一个css\js的block块,包含公共的css和js样式。
组件
- 将一小段的html文本写入到文件中(nav.html,名字自己随便定义)
- 在模板中写{% include ‘ nav.html ’ %}
静态文件
配置:STATIC_URL=’/static/’
STATICFILE_DIRS=[
os.path.join(BASE_DIR,‘static’)
]
引入:
<link rel='stylesheet' href='/static/相对路径'>#引入css
<script src='/static/相对路径'></script>#引入js
为避免STATIC_URL='/static/'中‘static名字改变就要修改模板中的所有引入,建议采用下述方式引用’
{%load static%}
<link rel='stylesheet' href='{% static '相对路径' %}>
自定义方法
filter、simple_tag、inclusion_tag
- 在app下创建一个名为templatetags的python包
- 在templatetags中创建一个python文件,文件名可自定义(mytags.py)
- 在自定义的文件中导入template模板和写register=template.Library()语句,此步骤为固定写法
from django import template
register=template.Library()#此处的()不能少
- 写函数+装饰器
@register.filter#注册过滤器
def add_arg(value,arg):#自定义过滤器最多两个参数,value为过滤器变量
#功能,字符串拼接
return "{}_{}".format(value,arg)
@register.simple_tag#注册simple_tag
def str_join(*args,**kargs):#参数个数没有限制
return XXX
@register.inclusion_tag(‘li.html’)#注册inclusion_tag
def str_join(num):#参数个数没有限制
return {'num':range(1,num+1)}
将参数用字典的形式传入’li.html‘模板中进行渲染
``
li.html
#修改翻页中页面总数的部分代码
<ul>
{% for i in num %}
<li> {{li}} </li>
{% endfor %}
</ul>
5.使用
{% load mytags %}
#使用自定义过滤器
{{ rongmei.name|add_arg:'tanqi' }}
#使用simple_tag
{% str_join 'a' 'b' k1='c' k2='d' %}
#使用inclusion_tag
{%show_li 10%}