通常,问题是如何在开发环境中提供静态文件,而在我的情况下却是相反的。所以我使用Apache和mod_wsgi部署了一个Flask应用程序,配置Apache在/ static url中提供我的静态文件。现在我不确定,这些文件是由Apache还是由Flask提供,因为flask默认情况下也使用相同的静态路径。
在模板中我使用url_for(“static”,filename =“style.css”)。它工作正常。但这是问题,因为我不知道什么是我的静态文件。当然,我可以肯定Apache正在服务,如果我改变每个模板以获得硬编码路径和不同于默认Flask的东西,但这听起来不是正确的解决方案。
总结一下我的问题:如何在Flask(模板)中使用url_for(静态),并确保Flask没有为我服务?
谢谢, Rapolas K。
答案 0 :(得分:6)
设置另一个静态文件夹(您还需要在文件系统上创建空文件夹):
app = Flask(__name__, static_url_path='static', static_folder='static_test')
因此,如果你得到404,那么文件由另外一个apache服务。
添加测试文件夹并映射apache和静态文件夹。
因此,如果您从测试文件夹获取内容,那么由apache起作用的文件烧瓶。
中断任何static
个端点请求:
@app.before_request
def break_static():
if request.endpoint == 'static':
abort(404)
return None
或
class YourApp(Flask):
def send_static_file(self, filename):
abort(404)
因此,如果你得到404,那么文件由flaks服务,否则为apache。
但是如果你真的不确定的话,你有足够的一次测试这个案例。如果apache配置不会改变,那么静态服务行为也不会改变。
答案 1 :(得分:0)
只要你有这个就可以确定:
if __name__ == '__main__':
app.run()
app.run()调用实际上启动了本地开发服务器。在制作中,你将/永远不必打电话给这个,因此开发者无法提供任何服务。服务器,因为它永远不会启动。