2015-10-08 47 views
2

我使用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"> 

但問題是,這些文件沒有被發現,儘管路徑是正確的。

有人可以解釋我爲什麼會發生這種情況?

+0

「bower_components」公開/? – nathancahill

+0

是的,它在/公共文件夾,這就是爲什麼奇怪 – Hiero

回答

0

顯然我bower_components路徑應該/public/bower_components/../../

3

我花了好長時間才弄清楚這一點。你必須導入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/