标签:imp 基础 set play lap str har opened 方法
Flask使用的是Jinja2模板,其语法与Django框架中模板系统一样,与模板相关联的方法有:
该方法是对模板的渲染,相当于django中的render方法:
from flask import Flask, render_template app = Flask(__name__) @app.route(‘/‘) def index(): data = [ {‘username‘: ‘张三‘, ‘age‘: 12}, {‘username‘: ‘李四‘, ‘age‘: 22}, ] return render_template(‘index.html‘, data=data) if __name__ == ‘__main__‘: app.run()
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> {{data}} {% for obj in data %} {{ obj }} {% endfor %} </body> </html>
Markup其实相当于django中的make_safe,在Jinja2的模板中可以是safe对html进行转义,同时flask中也可以使用Markup:
from flask import Flask, render_template, Markup app = Flask(__name__) def html(): html_str = Markup("<a href=‘#‘>点击我</a>") return html_str @app.route(‘/‘) def index(): return render_template(‘index.html‘, func=html) if __name__ == ‘__main__‘: app.run()
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> {{func()}} </body> </html>
顾名思义返回的数据时json数据,该方法可以用作返回接口数据。
from flask import Flask, jsonify app = Flask(__name__) @app.route(‘/‘) def index(): return ({‘a‘: 1, ‘b‘: 2}) # 或者 return jsonify(a=‘1‘,b=‘2‘) if __name__ == ‘__main__‘: app.run()
之前的render_template是可以直接返回数据给模板的,但是假如你想在返回页面之前对response在进行一下加工,比如加入cookie、headers之类的参数,该方法就可以使用。
from flask import Flask, render_template, make_response app = Flask(__name__) @app.route(‘/‘) def index(): response = make_response(render_template(‘index.html‘, num=56)) response.headers[‘X-Parachutes‘] = ‘parachutes are cool‘ return response if __name__ == ‘__main__‘: app.run()
使用在html模板中,可以在该参数范围内定义一个代码块,并且可进行调用。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> {% macro func(name) %} <!--定义func函数,有name形参--> {{ name }} {% endmacro %} {{ func(‘小明‘) }} <!--调用func函数,并且传递参数--> </body> </html>
标签:imp 基础 set play lap str har opened 方法
原文地址:https://www.cnblogs.com/shenjianping/p/13227933.html