flask之宏和import语句

  • 宏的定义与使用场景:模板中的宏跟python中的函数类似,可以传递参数,但是不能有返回值,可以将一些经常用到的代码片段放到宏中,然后把一些不固定的值抽取出来当成一个变量
  • import 与python一样,通过import调用宏,调用其中的函数方法
    例子:
{% macro input(name, value='', type='text') %}
    <input type="{{ type }}" name="{{ name }}" value="{{ value }}">
{% endmacro %}

在定义宏之后,可以在本程序中import该宏,导入方式:

{% import 'macro.html' as macro  %}
或者:
{% from "macro.html" import input %}

上代码:
HTML文件:
宏文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    {% macro input(name,value='',type='text') %}
    <input type="{{ type }}",name="{{ username }}",value="{{ value }}">
    {% endmacro %}
<!--    <table>-->
<!--    <tr>-->
<!--        <td>用户名:</td>-->
<!--        <td>{{ input('username') }}</td>-->
<!--    </tr>-->

<!--    <tr>-->
<!--        <td>密码:</td>-->
<!--        <td>{{ input('password', type='password') }}</td>-->
<!--    </tr>-->
<!--    </table>-->
</body>
</html>
  • 注:可以把注释代码取消,此时可以显示一个表
    主HTML:导入和使用macro中定义的宏
{% import 'macro.html' as macro with context %}
{% from 'macro.html' import input %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <p>{{ input('password', type='password') }}</p>
    <p>{{ macro.input('username') }}</p>
</body>
</html>

python文件:

#! C:\Python\Python36
# -*- coding: utf-8 -*-
# @Time : 2020/10/16 13:58
# @Author : liuchengyong
# @File : 宏.py
# @Software: PyCharm
from flask import Flask,render_template
#from datetime import datetime

app = Flask(__name__)
context = {
    'username':'lcy1992',
    'age':18,
    'books':['python','java','php'],
    'book2':{'python':666,
            'java':777,
            'php':888}
}

@app.route('/macro/')
def if_for():
    return render_template('macro.html')

@app.route('/')
def import_test():
    return render_template('import_test.html')

if __name__ == '__main__':
    app.run(debug=True)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值