我试图提供一个静态的html文件,但返回一个500错误(editor.html的副本在.py和templates目录)这是我所尝试的:
from flask import Flask
app = Flask(__name__, static_url_path='/templates')
@app.route('/')
def hello_world():
#return 'Hello World1!' #this works correctly!
#return render_template('editor.html')
#return render_template('/editor.html')
#return render_template(url_for('templates', filename='editor.html'))
#return app.send_static_file('editor.html') #404 error (Not Found)
return send_from_directory('templates', 'editor.html')
这就是答案:
Title: 500 Internal Server Srror
Internal Server Error
The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.
4条答案
按热度按时间r9f1avp51#
将其简化为最简单的方法:
1.将静态资源放入
static
子文件夹。1.将Flask设置为默认值,也不要给予它一个
static_url_path
。1.通过预配置的
/static/
访问静态内容,以验证文件是否正常工作如果您仍然希望重用静态文件,请使用
current_app.send_static_file()
,并且不要使用前导/
斜杠:这将在
static
文件夹中 * 直接 * 查找文件editor.html
。这假定您将上述文件保存在一个包含
static
子文件夹的文件夹中,该子文件夹中包含一个文件editor.html
。一些进一步说明:
static_url_path
更改了静态文件可用的 URL,而不是文件系统上用于加载数据的位置。render_template()
假定您的文件是Jinja 2模板;如果它实际上只是一个静态文件,那么如果文件中实际可执行语法有错误或缺少上下文,那么这就太过分了,而且 * 可能 * 导致错误。u91tlkcl2#
所有的答案都很好,但对我来说很好的是使用Flask的简单函数
send_file
。当你只需要发送一个html文件作为响应时,这个函数很好用,***host:port/ApiName***将在浏览器中显示文件的输出uemypmqf3#
send_from_directory
和send_file
需要从flask
变为import
。如果您执行以下操作,您的代码示例将正常工作:
但是,请记住,如果此文件加载其他文件,例如javascript,css等,您也必须为它们定义路由。
此外,据我所知,这不是推荐的生产方法,因为它很慢。
yeotifhr4#