Python 使用Flask路由静态文件

Python 使用Flask路由静态文件,python,flask,Python,Flask,所以我要走出去,让它的方式,我知道这可能是一个可怕的方式为我的网站提供静态文件。我遇到过很多其他线程(这些线程还没有完全解决我的问题),它们暗示我应该使用apache这样的Web服务器来服务静态文件。到目前为止,我一直在为我的静态网站做这件事,但我主要是想在学习Flask并将其功能添加到网站时,以这种方式进行开发 因此,基本上,给我带来麻烦的是,我想使用Flask为我的所有静态文件(JS、CSS等)提供服务,并使用Flask路由我的所有静态网页(只是暂时,这样我可以在没有apache的情况下运行

所以我要走出去,让它的方式,我知道这可能是一个可怕的方式为我的网站提供静态文件。我遇到过很多其他线程(这些线程还没有完全解决我的问题),它们暗示我应该使用apache这样的Web服务器来服务静态文件。到目前为止,我一直在为我的静态网站做这件事,但我主要是想在学习Flask并将其功能添加到网站时,以这种方式进行开发

因此,基本上,给我带来麻烦的是,我想使用Flask为我的所有静态文件(JS、CSS等)提供服务,并使用Flask路由我的所有静态网页(只是暂时,这样我可以在没有apache的情况下运行我的应用程序,并且仍然加载所有链接)。我的应用程序设置是:我有一个包含所有代码的“app.py”,一个包含所有静态文件的“static”目录,以及一个包含所有网页的“templates”文件夹

这是我目前的代码:

from flask import Flask, render_template

# Create the application object
app = Flask(__name__, static_url_path='/static')

# Routes to path
@app.route('/')
def home():
    return render_template('index.html')

# Routes to specific file, want to route all my pages instead
@app.route('/work.html')
def work():
    return render_template('work.html')

#Route methods for other webpages

# Serves static files
@app.route('/<path:path>')
def static_file(path):
    return app.send_static_file(path)

# Start the server 
if __name__ == '__main__':
    app.run(debug=True)
从烧瓶导入烧瓶,渲染\u模板
#创建应用程序对象
app=Flask(\uuuuu name\uuuuuu,static\uurl\u path='/static')
#路径
@应用程序路径(“/”)
def home():
返回渲染模板('index.html')
#路由到特定文件,是否改为路由所有我的页面
@app.route(“/work.html”)
定义工作():
返回render_模板('work.html')
#其他网页的路由方法
#提供静态文件
@应用程序路径(“/”)
def静态_文件(路径):
返回应用程序。发送静态文件(路径)
#启动服务器
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
app.run(debug=True)

现在,这段代码有一些值得注意的问题,但不幸的是,这是我能让它正常运行的最好方法。首先,我已经读了很多关于“从目录发送”而不是“发送静态文件”是在Flask中发送静态文件的正确方法的文章,但我不能完全实现这一点。但我目前主要担心的是,我不能以这种方式发送所有静态网页(我本以为“static_file”除了为我所有的JS、CSS等提供服务外,还能做到这一点);目前,我只能通过在“app.py”中为每个网页创建一个单独的函数来路由我的网页,这似乎非常低效。所以,是的,如果我的代码中有几行我需要修改,我会非常感激被指向正确的方向

我知道这并不能解决您的问题,但flask(以及通常的wsgi)在提供静态文件方面非常慢。我发现,通过nginx和proxy为静态文件提供服务要快得多。您可以将所有其他请求传递到wsgi进程。在开发过程中,您可以将静态文件放在名为
static
的文件夹中,并在模板中使用
url\u for('static',filename='style.css')
等链接所有静态文件。