Y24
专业理论推荐博客:https://blog.csdn.net/muttry/article/details/80872007
在此只谈个人理解
一、include用法:
在个人看来,就是实现了,当flask工程中有多个网页中有相同模块时,只需要通过共享文件html直接调用即可,不用每个使用到的网页都写一遍模块代码。 操作:
1、在工程目录下创建一个共享文件夹templates文件夹(若在其他目录中创建该文件夹,需要在创建的Flask的工程app下,修改templates的文件位置,代码如下)
from flask import Flask
#template_folder默认目录为工程目录下templates文件夹
app = Flask(__name__,template_folder='static/templates')
app.debug=True
2、在文件夹中放置一个html文件,内容为多个网页公共使用的模块。之后在需要到该网页中,在指定位置直接使用{%include ‘网页名’%}调用即可,而且不需要渲染。调用之后,公共网页的内容就会出现在你调用的对应位置,不需要再写很多代码。如下: (例如创建的公共网页文件名为test.html)
二、extend用法:
extend中文名为扩充,其实就是为网页扩充模块的。类似python中类的继承。extend中也有父(基)模板,子模板。子网页中可以继承基类的一个或多个模块,注意,是以模块为单位继承的。举例:
基(父)网页代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
{% block css %}
{% endblock %}
</head>
<body>
<a href="{{url_for('app1.login')}}">点击进入login.html</a>
<h1>extend方法测试</h1>
{% block body %}
{% endblock %}
</body>
{% block js %}
{% endblock %}
</html>
子模板网页代码:
{%extends 'test0.html'%}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
{% block css %}
<style type="text/css"></style>
{%endblock%}
</head>
<body>
{% block body %}
<a href="{{url_for('app1.t')}}">点击进入test0.html</a>
<h1>extend测试</h1>
{%endblock%}
</body>
{% block js %}
<script type="text/javascript"></script>
{%endblock%}
</html>
效果:
基模板网页:
原子模板网页:
extend扩充模板,调用基模板之后子模板网页效果:
个人小结,定有不足,欢迎指点。
谢谢~