Flask: How to serve static html?

前端 未结 3 738
没有蜡笔的小新
没有蜡笔的小新 2020-12-06 05:35

I am trying to serve a static html file, but returns a 500 error (a copy of editor.html is on .py and templates directory) This is all I have tried:

from fla         


        
3条回答
  •  臣服心动
    2020-12-06 05:59

    Reducing this to the simplest method that'll work:

    1. Put static assets into your static subfolder.
    2. Leave Flask set to the default, don't give it a static_url_path either.
    3. Access static content over the pre-configured /static/ to verify the file works

    If you then still want to reuse a static file, use current_app.send_static_file(), and do not use leading / slashes:

    from flask import Flask, current_app
    app = Flask(__name__)
    
    @app.route('/')
    def hello_world():
        return current_app.send_static_file('editor.html')
    

    This looks for the file editor.html directly inside the static folder.

    This presumes that you saved the above file in a folder that has a static subfolder with a file editor.html inside that subfolder.

    Some further notes:

    • static_url_path changes the URL static files are available at, not the location on the filesystem used to load the data from.
    • render_template() assumes your file is a Jinja2 template; if it is really just a static file then that is overkill and can lead to errors if there is actual executable syntax in that file that has errors or is missing context.

提交回复
热议问题