Flask 学习笔记
一、宏
模板中的宏跟 python 中的函数类似,可以传递参数,但是不能有返回值,可以将一些经常用到的代码片段放到宏中,然后把一些不固定的值抽取出来当成一个变量。怎么用呢?可以通过传参的方式定义 html 标签中的属性。
<!-- 先用 宏 定义input的结构 -->
{% macro input2(names, values='', types='text') %}
<input name="{{names}}", value="{{values}}", type="{{types}}">
{% endmacro %}
<!-- 使用 -->
<table>
<tr>
<td>用户名:</td>
<td>{{ input2('nameuser') }}</td>
</tr>
<tr>
<td>密码:</td>
<td>{{ input2('password', types='password') }}</td>
</tr>
<tr>
<td>提交:</td>
<td>{{ input2(values='提交', types='submit') }}</td>
</tr>
</table>
二、import 语句
在真实的开发中,会将一些常用的宏单独放在一个文件中,在需要使用的时候,再从这个文件中进行导入。import 语句的用法跟 python 中的 import 类似。
2.1、导入
- 注意 import 语句的位置(用于显示的 index.html 文件)
{% import "macro.html" as ma %}
{% from "macro.html" import input2 %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{{ ma.input2("username", values="import 导入") }}
{{ input2("username2", values="from 导入") }}
</body>
</html>
- macro.html 文件
{% macro input2(names, values='', types='text') %}
<input name="{{names}}", value="{{values}}", type="{{types}}">
{% endmacro %}
- 用于启动的 flask 项目文件(py 文件)
@app.route("/")
def index():
context = {
"conname": "名字",
"num": 66,
"books": {
'Python': 46,
'Java': 37,
'PHP': 33
}
}
return render_template("index.html", **context)
2.2、需要使用到 py 文件中的参数
- 可用直接使用
<!-- conname 是在 flask 项目文件中定义了的变量 -->
{{ ma.input2(conname, values="使用参数") }}
- 在宏的方法中使用,然后调用宏时一起调用
# 宏方法中使用, 如 conname
{% macro input2(names, values='', types='text') %}
<input name="{{conname}}", value="{{values}}", type="{{types}}">
{% endmacro %}
# 一起调用
{% import "macro.html" as ma with context %}
{{ ma.input2(values="查看网页源码中该标签的属性") }}