flask中的模板语言是按照jinja2中使用的
- {{ }}
这是可以用来接收和使用后台传输过来的数据的 - {% %}
可以使用一些简单的语法。- for 循环
{% for i in student%} {{ loop.index}} ##可以使用loop.xxx来看出循环的下表 {% endfor %}
- if
{% if student %} {% endif%}
关于安全
flask中前端有safe的过滤器或者后端引用
from flask import makeup
a = makup(‘代码’)
这时候传过去的就不会触发安全机制被过滤。
模板复用
在jinja2中可以和django一样,使用模板继承
在base.html文件中
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>Welcome OldboyEDU</h1>
<h2>下面的内容是不一样的</h2>
{% block content %}
{% endblock %}
<h2>上面的内容是不一样的,但是下面的内容是一样的</h2>
<h1>OldboyEDU is Good</h1>
</body>
</html>
在index.html中,
{% extends "index.html" %}
{% block content %}
<form>
用户名:<input type="text" name="user">
密码:<input type="text" name="pwd">
</form>
{% endblock %}
include 的用法和extend一样,不过include一般是用标签,而不是整个html代码。
而且include的性能比较差,一般可以使用extend的不适用include。
宏定义
这个和django是一样的,宏定义意思就是可以在html中设置一些函数。然后使用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% macro type_text(name,type) %}
<input type="{{ type }}" name="{{ name }}" value="{{ name }}">
{% endmacro %}
<h2>在下方是使用宏来生成input标签</h2>
{{ type_text("one","text") }}
{{ type_text("two","text") }}
</body>
</html>