python - Python Flask 提供 .htm 文件,可能吗?
问题描述
我是 Python 初学者。我有数百个要显示的静态 .htm 文件(不是 .html)。
对我来说最好的方法是什么?
非常感谢
from flask import Flask, redirect, url_for, render_template, request, session, flash, Response, jsonify
app = Flask(__name__)
app.config['SECRET_KEY'] = 'hello'
@app.route('/view')
def view():
return render_template("example.htm")
if __name__ == "__main__":
app.run(debug=True)
解决方案
如果你有数百个静态 .htm 文件,我想手动编写一个 Flask View 文件会非常非常乏味。:-(
幸运的是,您可以使用 Python 读取文件列表并为您编写更多 Python 代码和 View.py 文件!:-)
将以下代码放在与您的 HTM 文件相同的文件夹中的文件(例如)“view_builder.py”中,然后从该文件夹中的 cmd 提示符执行它:(python3 view_builder.py)
import glob
# start a file for the Flask Views
view_file = open("view.py", "a")
# first write the View file header with Flask imports
fileline = "from flask import Flask, redirect, url_for, render_template, request, session, flash, Response, jsonify" + "\n\n"
view_file.write(fileline)
fileline = "app = Flask(__name__)" + "\n"
view_file.write(fileline)
fileline = "app.config['SECRET_KEY'] = 'hello'" + "\n"+ "\n"
view_file.write(fileline)
# assuming all views will have the same name as original HTM file
# filetype may be case sensitive?
for file in glob.glob("*.HTM"):
# split file into filename and filetype
fileparts = file.split('.')
# build the app route and view def() with just the filename (no need for filetype)
fileline = "@app.route('/" + fileparts[0] + "')" + "\n"
view_file.write(fileline)
fileline = "def " + fileparts[0] + "():" + "\n"
view_file.write(fileline)
# use the whole file name (with filetype) for the template file
fileline = " return render_template('" + file + "')" + "\n"+ "\n"
view_file.write(fileline)
# View.py file footer
fileline = 'if __name__ == "__main__":' + "\n"
view_file.write(fileline)
fileline = ' app.run(debug=True)' + "\n"
view_file.write(fileline)
view_file.close
推荐阅读
- javascript - 如何使用 NgRx 选择作为主题而不是 BehaviorSubject
- angular - 在 ngif 中通过 id 引用时出错
- angular - 为 NGRX 中的所有操作添加新属性
- c# - 为什么 app.UseResponseCompression() 会增加通过网络传输的响应的大小?
- reactjs - 如何使表格行可点击?
- android - 无法在 Google Play Developer Console 上上传针对多个 CPU 架构的多个 APK
- rest - DocuSign - 将完成的文档附加到 Salesforce 对象
- asp.net-mvc - 我应该使用哪种 PayPal 付款方式?
- sparql - sparql 中 BIND 方法的替代方法
- python - 函数没有遍历所有值并在循环中的第一个值之后停止