Python Eve从给定文件夹提供静态文件
问题描述:
我使用Eve和Python构建了一个简单的REST API。Python Eve从给定文件夹提供静态文件
from flask import redirect, send_from_directory, render_template
from eve import Eve
import os
PWD = os.environ.get('PWD')
public = os.path.join(PWD, 'public')
app = Eve(static_folder=public)
# serve index.html
@app.route('/')
def index():
return send_from_directory(public, 'index.html')
# start the app
if __name__ == '__main__':
app.run()
当请求/
当我刚刚从/public
文件夹服务于静态HTML文件。
我使用凉亭安装引导:
<link rel="stylesheet" type="text/css" href="bower_components/bootstrap/dist/css/bootstrap.css">
<link rel="stylesheet" type="text/css" href="bower_components/bootstrap/dist/css/bootstrap-theme.css">
但问题是,这些文件没有被发现,尽管路径是正确的。
有人可以解释我为什么会发生这种情况?
答
显然我bower_components路径应该/public/bower_components/../../
答
我花了好长时间才弄清楚这一点。你必须导入send_from_directory
明确,并在settings.py
使用__name__
from eve import Eve
from flask import send_from_directory
app = Eve(__name__, static_folder="static")
@app.route('/')
def index():
return send_from_directory("static", 'index.html')
app.run()
然后:
URL_PREFIX="api"
静态文件传递:
http://127.0.0.1:5000/
http://127.0.0.1:5000/static/images/image.jpg
http://127.0.0.1:5000/static/css/style.css
API调用:
http://127.0.0.1:5000/api/person/
“bower_components”公开/? – nathancahill
是的,它在/公共文件夹,这就是为什么奇怪 – Hiero