Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Eve服务于给定文件夹中的静态文件_Python_Flask_Eve - Fatal编程技术网

Python Eve服务于给定文件夹中的静态文件

Python Eve服务于给定文件夹中的静态文件,python,flask,eve,Python,Flask,Eve,我用Eve和Python构建了一个简单的RESTAPI 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.r

我用Eve和Python构建了一个简单的RESTAPI

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安装引导程序:

<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_组件的路径应该是/public/bower_components/。/../

我花了很长时间才弄明白这一点。您必须显式地从目录导入
发送\
,并使用
\u名称\

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/

是的,它在/public文件夹中,这就是奇怪的原因