首页 > 解决方案 > 渲染静态文件时出现Flask内部服务器错误

问题描述

我是 Flask 的新手,我遇到了一个问题:当我返回一条消息时,例如:

app_setup.py

@app.route("/")
def hello():
    return '''Hello World!'''

它工作正常。但是,当我尝试呈现静态 html 文件时,例如:

app_setup.py

@app.route("/")
def hello():
    return render_template('static/index.html')

它给了我一个内部服务器错误。我怎样才能解决这个问题?

注意:我在 Docker 中使用 uWSGI 和 Nginx 运行 Flask。

主文件

from flask import *

app = Flask(__name__)
app.config['TEMPLATES_AUTO_RELOAD'] = True

from .core import app_setup

if __name__ == "__main__":
    # Only for debugging while developing
    app.run(host='0.0.0.0', debug=True, port=80)

标签: flask

解决方案


默认情况下,render_templates()去寻找你的静态模板文件到/templates你的应用程序的子目录中。一个好的方法是创建一个模板目录,并将静态文件移到index.html那里。

虽然,如果您确实想为模板静态文件设置一个新目录,您可以在初始化应用程序时尝试以下操作:

import os
tmpl_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'templates')
# ...
app = Flask('myapp', template_folder=tmpl_dir)

推荐阅读