在Flask生产中提供静态文件

时间:2019-10-11 15:01:12

标签: flask

我的static文件夹中有app文件夹,那里就是jscssimages等文件夹。

我在模板中这样引用它们:

<script src="/static/js/main.js"></script>

,它在本地工作。但是,当应用发布到生产环境时,我得到了所有静态文件的404。我是Flask的新手,所以我想我在为他们提供错误的服务。 我没有在应用程序中的任何位置将static文件夹设置为指定的静态文件文件夹-如果它被称为“静态”,是否会自动完成?还是需要在代码中进行设置?

我的项目结构:

app/
├── static/
│   └── js/
|   |__ css/
├── templates/
│   └── index.html
└── __init__.py
application.py

application.py:

from app import create_app

application = create_app()

初始化 .py:

from flask import Flask
from config import BaseConfig

def create_app():
    server = Flask(__name__)
    server.config.from_object(BaseConfig) # this is just for the secret key
    return server

2 个答案:

答案 0 :(得分:2)

Flask自动添加一个静态视图,该视图采用相对于$YOUR_APP/static目录的路径并提供服务。

通常,您将js / css文件包括在模板中,如下所示:

{{ url_for('static', filename='main.js') }}

答案 1 :(得分:0)

解决方案的第一部分是上述Bert的答案,其中描述了如何从模板正确引用资产。

我所缺少的另一部分是:

server = Flask(__name__, static_url_path="", static_folder="static")

而不是以前的事情:

server = Flask(__name__)

添加static_url_pathstatic_folder为我解决了这个问题。