static_folder在Flask调试模式和开发中不起作用

时间:2013-09-10 18:58:32

标签: python flask

我的文件结构:

my_app
   /models
   /views
   /templates
   /other_folders
   /www (where flask resides)
      /templates
         some_files.html
      /static
         /css
           style.css
      /views
      /models
   my_app.py (run the app in console)
   web_my_app.py (run flask app)

在web_my_app.py中,我的static_folder设置方式如下:

app = Flask('my_app',
            template_folder='www/templates/',
            static_folder='www/static'
            )

# As a test, let's develop a basic page 
@app.route('/')
def show_index():
    return render_template('main.html', entry="hello")

main.html看起来像这样:

{# Main page #}
{% extends "layout.html" %}
 {% block body %}
 <h2>Main Page</h2>
 {{ entry }}
{% endblock %}

layout.html具有以下样式表

<link rel=stylesheet type=text/css href="{{ url_for('static', filename='css/style.css') }}">

问题:为什么我的静态页面上有404而不是我的模板?

该应用程序设法访问模板文件很好,花花公子,但不知道静态页面在哪里。

1 个答案:

答案 0 :(得分:2)

我认为你会发现静态文件很好并且可以在http://localhost:5000/www/static/...访问。

Flask的开发服务器默认使用与static_folder参数中提供的URL前缀相同的静态文件。如果您希望URL不同,则必须将static_url_path参数添加到Flask构造函数中。例如:

app = Flask('my_app',
        template_folder='www/templates/',
        static_folder='www/static',
        static_url_path='/static'
        )

现在,您可以在http://localhost:5000/static/...

找到静态文件