Python Eve从给定文件夹

时间:2015-10-08 13:25:07

标签: python flask eve

我用Eve和Python构建了一个简单的REST api。

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文件。

我正在使用bower来安装bootstrap:

<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">  

但问题是虽然路径正确,但找不到文件。

有人能解释我为什么会这样吗?

2 个答案:

答案 0 :(得分:4)

我花了很长时间才弄明白这一点。您必须明确导入send_from_directory并使用__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()

然后在settings.py

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/

答案 1 :(得分:0)

显然我的bower_components的路径应该是/ public / bower_components /../../