(零三)Flask有手就行——HTML渲染

零、前言

上篇文章,我们介绍了动态路由,通过匹配URL来返回对应内容。
本篇文章,我们讲解HTML页面和jinja2语法

冲

一、返回HTML页面

Python 中生成 HTML 并不好,因为需要考虑很多转义的问题。但是Flask提供了方法render_template() 来渲染模版。

# app.py

from flask import Flask
from flask import render_template

app = Flask(__name__)

# (1) 声明一个动态路由
@app.route('/hello/<string:name>')
def hello(name):
	# (2) 返回HTML模板和其对应的参数
	# !! HTML模板的名字为hello.html,我们下面创建文件时,一定要与之对应
    return render_template('hello.html', name=name)

if __name__ == '__main__':
    app.run(debug=True)

上面代码中(1)使用了我们上篇文章的动态路由,而(2)出使用了渲染模板的函数。

接下来就有小伙伴问了,我们的HTML要放在那里?
答:在上面代码同级的目录创建一一个目录,名称为templates一定要是这个名字),我们创建一个名称为hello.html文件(上文中提到过这个名字),书写如下代码:

<!doctype html>
<html lang="en">
<head>
    <title>Hello from Flask</title>
</head>
<body>
    <h1>Hello {{ name }}!</h1>
</body>
</html>
  • 特别注意一下,h1标题后的name,一定要用{{}}括起来,因为它属于Flask传入进来的变量

Q & A

  • Q: 在使用render_template渲染页面时,抛出AttributeError: ‘Token’ object has no attribute 'test’异常。
    回答:错误原因,Python3.6.0与Jinja2 3.0.1不兼容,解决方法:升级Python解释器,使用3.6.0以上版本。降级Jinja2 ,使用3.0.1以下版本
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

自由小冰儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值