Python Flask 渲染静态程动态页面
- [Python Flask 渲染静态程动态页面](#Python Flask 渲染静态程动态页面)
Python Flask 渲染静态程动态页面
对网页应用程序来说,静态内容是重要的,因为它们包括 CSS 和 JavaScript 文件。静态文件可以直接由网页服务器提供。如果我们在我们的项目中创建一个名字是 static
目录,并且重定向客户端到静态文件位置,Flask 可以支持静态内容。
动态内容可以使用 Python 创建,但它很乏味,需要在Python中维护这样的代码。
推荐的方法是使用 Jinja2 等模板引擎。Flask 附带了 Jinja2 库,因此不需要安装额外的库,也不需要添加任何额外的配置来设置 Jinja2。下面显示了一个具有两个函数的示例代码,一个处理静态内容的请求,另一个处理动态内容的请求:
python
# 渲染静态和动态页面
from flask import Flask, render_template, url_for, redirect
app = Flask(__name__)
@app.route("/hello")
def hello():
hello_url = url_for("static", filename="app3_static.html")
return redirect(hello_url)
@app.route("/greeting")
def greeting():
msg = "这是来自宇宙深处的消息。"
return render_template("app3_dynamic.html", greeting=msg)
if __name__ == '__main__':
app.run()
为了更好地理解这个示例代码,我们将强调一下关键点:
- 我们从Flask导入了其他模块,如
url_for
、redirect
和render_template
; - 对于
/hello
路由,我们使用url_for
函数构建一个 URL,其中静态目录和 HTML 文件名作为参数。我们向浏览器发送响应,这是一条指令,将客户端重定向到静态文件位置的 URL。重定向指令通过使用300-399
范围内的状态码指示给网页浏览器,当我们使用重定向功能时,Flask会自动设置该状态码。 - 对于
/gtreating
路由,我们使用render_template
函数渲染一个 Jinja 模板app3_dynamics.htm
。我们还将问候消息字符串作为值传递给模板的变量。问候语变量将可用于 Jinja 模板,如app3_dynamics.html
文件中的以下模板摘录所示:
HTML
<!DOCTYPE html>
<body>
{% if greeting %}
<h1> {{greeting}}!</h1>
{% endif %}
</body>
</html>
这是最简单的 Jinja 模板,其中 if
语句用 <%%>
括起来,Python变量使用两个花括号{``{}}
格式包含在内。我们不会详细介绍 Jinja2 模板,但我们强烈建议您通过他们的在线平台熟悉Jinja2的模板
(https://jinja.palletsprojects.com/).
可以使用 curl
工具和网页浏览器访问这个网页应用程序。
<完>