高效编程的方法
原创
©著作权归作者所有:来自51CTO博客作者林海峰4573的原创作品,请联系作者获取转载授权,否则将追究法律责任
一、前端模板
变量:{{ 变量 }}
1、标签
{% block 名字 %}
{% endblock %}
2、父子模板的使用
1)实现逻辑
- 定义一个base.html的模板
- 子模板继承父模板
2)步骤
父模板
- 定义一个base.html的模板
- 分析模板中哪些是变化的:比如 {% block title %}父模板的title{% endblock %},对变化的部分使用block进行“预留位置”,也称作挖坑
- 注意:样式和脚本,需要提前预留
{% block mycss %} {% enblock %}
{% block myjs %} {% enblock %}
子使用父模板
- {% extends ‘父模板的名称’ %} 将父模板继承过来
- 找到对应的block(坑)填充
3、include包含
使用场景:在A、B、C页面有共同的部分,但是其他页面没有这部分
步骤
- 先定义一个公共的模板部分 xxx.html
- 谁使用则include过来,{% include '文件夹/xxx.html' %}
4、macro 宏
- 把它看做是jinja2的一个函数,这个函数可以返回一个html字符串
- 目的:代码可以复用,避免代码冗余
定义两种方式
- 在模板中直接定义:类似marco1.html 中定义方式
- 将所有宏提取到一个模板中 macro.html
谁使用谁导入(注意格式)
{% import 'macro/macro.html' as xxx %}
{{ xxx.宏名字(参数) }}
1)单次使用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>宏的使用2</title>
</head>
<body>
<!--定义宏-->
{% macro form(action, value='登录', method='post') %}
<!--作为变量传值-->
<form action="{{ action }}" method="{{ method }}">
<input type="text" placeholder="用户名" name="username">
<br>
<input type="password" placeholder="密码" name="password">
<br>
<input type="submit" value="{{ value }}">
</form>
{% endmacro %}
<!--调用宏-->
{{ form('/') }}
</body>
</html>
macro1.html
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# __author__ = "wzs"
#2021/7/17
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/macro1')
def use_macro1():
return render_template('macro/macro1.html')
if __name__ == '__main__':
app.run(port=5001, debug=True)
app.py
2)多次使用可以下面这样写
<!--定义宏-->
{% macro form(action, value='登录', method='post') %}
<!--作为变量传值-->
<form action="{{ action }}" method="{{ method }}">
<input type="text" placeholder="用户名" name="username">
<br>
<input type="password" placeholder="密码" name="password">
<br>
<input type="submit" value="{{ value }}">
</form>
{% endmacro %}
<!--调用宏-->
{{ form('/') }}
macro.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>宏的使用2</title>
</head>
<body>
{% import 'macro/macro.html' as func %}
{{ func.form('/welcome', value='注册') }}
</body>
</html>
macro2.html
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# __author__ = "wzs"
#2021/7/17
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/macro2')
def use_macro2():
return render_template('macro/macro2.html')
if __name__ == '__main__':
app.run(port=5001, debug=True)
app.py
5、块总结
{% if 条件 %} ...... {% endif %}
{% for 条件 %} ...... {% endfor %}
{% block 条件 %} ...... {% endblock %}
{% macro 条件 %} ...... {% endmacro %}
{% include '' %} 包含
{% import ‘’ %} 导入
{% extend %} 扩展
二、前端快速编写
1、安装emmet插件
官网:https://docs.emmet.io/