Flask静态文件给出404

时间:2016-08-20 01:10:43

标签: python nginx flask

main.py文件中的代码:

from flask import Flask, render_template, send_from_directory
app = Flask(__name__, static_url_path="")
app._static_folder = "static"

@app.route("/")
def root():
    return app.send_static_file("index.html")

@app.route("/about")
def about():
    return app.send_static_file("about/index.html")

@app.route("/projects")
def projects():
    return app.send_static_file("projects/index.html")

#snip

if __name__ == "__main__":
    app.run(host="0.0.0.0")

当我转到根目录或/about目录时,它工作正常,但当我尝试转到/projects目录时,我收到错误:

错误消息:

  

未找到

     

在服务器上找不到请求的URL。如果您手动输入了URL,请检查拼写,然后重试。

1 个答案:

答案 0 :(得分:1)

有两个可能的原因。

  1. 你误输了路径。您是否在projects(即project)或index.html中输入了拼写错误?
  2. 路径不存在。与render_template不同,如果路径不存在,app.send_static_file就会死亡。由于static_folderstatic,因此项目页面代码应存在于static/projects/index.html下(而不是projects/index.html)。
  3. 要测试它是否是一个流氓问题,请用return 'some string'替换项目视图的主体。如果那个字符串没有显示,那么你手上就有一只不同的野兽。如果确实如此,那么它绝对是我上面提到的两个错误中的一个。

    在不相关的说明中,我会将debug=True添加到app.run(...) kwargs列表中,以使开发更方便。 (只要有文件保存,应用程序就会刷新)