Flask——模板

模板代码的复用:

在模板的使用中,会遇到下面3中情况
1.多个模板具有完全相同的顶部和底部内容
2.多个模板中具有相同的模板代码内容,但是内容中部分值不一样
3.多个模板中具有完全相同的 html 代码块内容

遇到以上三种情况,可以使用宏、继承、包含来实现。

宏的定义:

<!--定义一个宏-->可以让宏的扩展性强,可以给其设置参数
{% macro fun(type,size) %}
    <input type="{{type}}" name = 'user' placeholder = 'user' size = {{size}}><br>
    <input type="{{type}}" name = 'password' placeholder = 'password' size = {{size}}><br>
    <input type="submit">
{% endmacro %}
{{ fun('text',60) }}

封装宏然后调用
在一个模板文件中,定义了一个宏,在另一个模板文件中调用。
1.导入宏
{% import macro.html as f %}
{{ f.fun( ‘text’ , ’60’) }}

继承(block)

标签定义的内容:{% block  top %}内容{%endblock%}
在子模板中进行整合,{% extends 'base.html' %}
同时在进行重写的时候:{% block  top %} 重写的内容{%endblock%}
当然,可以使用{{super()}}实现即用了父类内容,还能自己实现的。


from flask import Flask,render_template

app = Flask(__name__)

	# 模板继承:
	# 1.多个页面中具有相同的顶部,底部或者部分中间内容的时候。
	# 2.多个页面中重复的内容,可以不用封装block。
	# 3.多个 页面中特有的内容可以封装成block快,可以让子类重写
	# 4.灵活运用。
	#5.模板不支持多继承。
	#6.extends语句建议写在第一行。extends语句下面的内容需要写在block里面才会生效,如果想要实现自己的内容,可以卸载extends上面,但是不建议,可以在父类中封装block,然后在子类中实现。
@app.route('/')
def index():
    return render_template('block.html')


	# 宏的概念:相当于模板中的函数,功能相当于Python中的函数,关键字macro相当于Python中的def
	# 宏的作用:实现模板页面代码的复用。
if __name__ == '__main__':
    app.run(debug=True)

包含

包含:就是把html页面完整的复用。{ % include ‘base.html’ ignore missing %}
建议加上ignore missing ,在找不到文件时不报错。

猜你喜欢

转载自blog.csdn.net/weixin_43617255/article/details/83895501