在Flask的应用程序根目录中存储静态文件有什么聪明的解决方案吗?预计在/中可以找到robots.txt和sitemap.xml,所以我的想法是为它们创建路由:
@app.route('/sitemap.xml', methods=['GET'])
def sitemap():
response = make_response(open('sitemap.xml').read())
response.headers["Content-type"] = "text/plain"
return response
一定有更方便的东西:)
发布于 2013-06-12 19:22:20
最好的方法是将static_url_path设置为根url
from flask import Flask
app = Flask(__name__, static_folder='static', static_url_path='')
发布于 2011-02-10 08:36:28
@vonPetrushev是对的,在生产中,你会希望通过nginx或apache提供静态文件,但对于开发来说,拥有简单的开发环境是很好的,让你的python应用程序提供静态内容,这样你就不必担心更改配置和多个项目。要做到这一点,您需要使用SharedDataMiddleware。
from flask import Flask
app = Flask(__name__)
'''
Your app setup and code
'''
if app.config['DEBUG']:
from werkzeug import SharedDataMiddleware
import os
app.wsgi_app = SharedDataMiddleware(app.wsgi_app, {
'/': os.path.join(os.path.dirname(__file__), 'static')
})
此示例假设您的静态文件位于" static“文件夹中,调整为适合您的环境。
发布于 2013-01-31 12:18:03
这个问题最简洁的答案是这个(相同的) question的answer
from flask import Flask, request, send_from_directory
app = Flask(__name__, static_folder='static')
@app.route('/robots.txt')
@app.route('/sitemap.xml')
def static_from_root():
return send_from_directory(app.static_folder, request.path[1:])
总结一下:
正如David指出的那样,通过正确的配置,ok to serve a few static files through prod
https://stackoverflow.com/questions/4239825
复制相似问题