目录
描述
Flask可以在浏览器中展示静态文件(例如txt文件、json文件、html文件等)。展示静态文件的手段有三种,分别是直接输入url访问、通过路由访问和重定向访问。
通过url直接访问静态文件
首先要在Python工程中创建一个目录static(名字和相对位置均不能改动)。如下所示:
在static目录下创建想要展示的文件。在这里我创建了一个test1.json和case.html
test1.json:
{
"name": "MacBook Pro",
"system": "Mac OS X"
}
case.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Case test</title>
</head>
<body>
<h1>Demo HTML file</h1>
<p>This is a demo file for Python flask. It's very interesting.</p>
<p>I love python. And I also love you.</p>
</body>
</html>
static目录中的文件分布如下:
接着在python工程目录下创建class7.py,也就是使用Flask框架的脚本:
脚本代码如下:
import webbrowser
from flask import Flask
app = Flask(__name__)
if __name__ == "__main__":
webbrowser.open("http://127.0.0.1:5000")
app.run()
脚本中初始化Flask类然后启动它。没有定义任何函数。
现在来启动class7.py,代码默认打开根路由:http://127.0.0.1:5000/
页面报错404.这是因为我们没有定义根路由。因此现象是正常的。
接下来我们先访问test1.json文件。在浏览器中输入:http://127.0.0.1:5000/static/test1.json,浏览器成功显示出test1.json文件中的全部内容:
接着访问casse.html,使用同样的方式:在浏览器中输入 http://127.0.0.1:5000/static/case.html
?提示:修改静态文件不需要重启Flask服务器就可以看到修改后的显示效果。
通过路由访问
可以定义一个路由访问静态文件。(文件路径结构保持不变)
下面的代码定义了一个静态路由/show,在该路由下会展示/static/test1.json文件中的内容(通过show_file函数调用send_static_file方法实现)
import webbrowser
from flask import Flask
app = Flask(__name__)
# 通过路由访问
# 运行程序,http://127.0.0.1:5000/show
@ app.route("/show")
def show_file():
return app.send_static_file("test1.json")
if __name__ == "__main__":
webbrowser.open("http://127.0.0.1:5000")
app.run()
运行代码,在浏览器中输入:http://127.0.0.1:5000/show, 就可以在浏览器中看到test1.json文件的内容了。
重定向访问
定义一个路由,使用redirect()函数将路由重定向到静态文件的url。通过路由重定向访问静态文件。
下面的代码定义了静态路由/demo。函数direct_show()中调用redirect()方法将路由重定向到静态文件的url。
import webbrowser
from flask import Flask, redirect
app = Flask(__name__)
# 重定向访问
# 运行程序,http://127.0.0.1:5000/demo
@ app.route("/demo")
def direct_show():
return redirect("/static/case.html")
if __name__ == "__main__":
webbrowser.open("http://127.0.0.1:5000")
app.run()
运行代码,在浏览器中输入 http://127.0.0.1:5000/demo,输入完毕后浏览器url会自动跳转到 http://127.0.0.1:5000/static/case.html。