1.母版和继承
当我们多个页面大部分代码相同时,只有少数特定的,我们可以建造母版并继承来,写自定义的block块来减少代码量
比如我们现在有这样一个html,写其他网页时都想用这个模板
base.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{% blcok title %}{% endblock %}</title>
</head>
<body>
<a href="{% block add %}{% endblock %}">增加</a>
{% block main %}
{% endblock %}
</body>
</html>
使用时:
{% extends 'base.html'' %}
{% block title %}
...
{% endblock %}
{% block add %}
...
{% endblock %}
{% block main %}
...
{% endblock %}
总结:
1.{% extends ‘母版文件名’ %} 继承母版,必须写在第一行,文件名必须为字符串,否则会当成变量去找
2.{% blocak xx %} … {% endblock %} 写子模板自定义内容,一定写在block中,写在外边没有用
3.在母版中多预留几个block块,如css和js,将来可能会用到
2.静态文件引入相关
我们引入静态文件时以别名开头,假如有一天有人手欠把别名给改了,那么所有引入静态文件的文件都完了,得全部改一遍,但是可以通过static标签来解决这个问题
{% load static %}
1.{% static '文件相对路径' %}
2.{% get_static_prefix %}文件相对路径。get_static_profix会自动帮我们获取别名
eg:
<link rel="stylesheet" href="/static/plugins/font-awesome-4.7.0/css/font-awesome.css">
可以改为:
<link rel="stylesheet" href="{% static'plugins/font-awesome-4.7.0/css/font-awesome.css' %}">
<link rel="stylesheet" href="{% get_static_prefix %}plugins/font-awesome-4.7.0/css/font-awesome.css">
3.simple_tag
可以将simple_tag看成一个参数不限制的过滤器
定义自定义fliter步骤相同,只不过装饰器为**@register.simple_tag**
使用也与自定义filter相似,但是不加管道符(|)
simple_tag的好处:参数没有限制
@register.simple_tag
def seer(*args,**kwargs):
return "_".join(args)+"*".join(kwargs.values())
{% load my_filter %}
{% seer "1" "2" "3" k1="4" k2="5" %}