模板-Templates
什么是模板
模板是一个包含响应文本的文件(通常是html文件),该文件中允许包含"占位变量"来表示动态的内容,其具体值在请求中才能知道。"占位变量"最终会被真实的值所替换。模板最终也会被解析成响应的字符串,这一过程称为"渲染"。Flask实际上是使用 Jinja2 强大的模板引擎。
模板的设置
默认情况下,Flask会在程序文件夹中的 templates 子文件夹中寻找模板,需要手动创建 templates 文件夹。
渲染模板
在 视图函数中,通过return render_template()将模板渲染成字符串再响应给客户端
render_template('xxx.html',arg1 = value1,arg2 = value2) # 参数1:xxx.html,要渲染给客户端的html模板文件 # 参数2 ~ n:要传递给模板动态显示的变量占位符,如果没有动态的变量占位符,则可以省略 # 返回值:字符串
模板语法
变量
变量时一种特殊的占位符,告诉模板引擎该位置的值是从渲染模板时的数据中来获取的。变量类型可以是python中的任意数据类型。
在视图中
@app.route('/') def index(): return render_template('xxx.html',name='sf.zh',age=18) # name和age就是要传递到xxx.html中的变量
在模板中
{{变量名}} {{params.变量名}}
变量的传递方式
直接传递
# 方式一,直接传递 @app.route('/temp') def temp(): res = render_template('temp.html', title = '关于本书', bookName = '《钢铁是咋练成的》', bookAuthor = '奥斯特洛夫斯基', bookPrice = '32.5', bookPlace = '北京大学出版社') return res
将变量封装为字典
@app.route('/temp') def temp(): bookInfo = { 'title':'关于本书', 'bookName':'《钢铁是咋练成的》', 'booAuthor':'奥斯特洛夫斯基', 'bookPrice':32.5, 'bookPlace':'北京大学出版社' } res = render_template('temp.html',params = bookInfo) return res