Flaskを使用してBlueprintから静的ファイルを提供することはできません。私はこれが何度も尋ねられたが、指示がはっきりしないと感じていることを知っている。また、私はそれを動作させることができませんでした。私は、次のファイル構造を有する:フラスコ - 青写真で静的ファイルを提供するには?
FlaskApp
├──__init__.py # Let's call it OuterInit.
└── FlaskApp
├──__init__.py # Let's call it InnerInit.
├── modulo
│ └── main.py #My blueprint
├── mongo
│ └── otherBlueprint... Still not developed.
├── __pycache__
├── resources
├── static
│ ├── public
│ │ └── SomePublicFiles...
│ └── R
| └── TheFileIWant.R #I want to serve this file
└── templates
└── index.html #I serve this template from my Blueprint. (it works)
OuterInit: このファイルには、単にサービスを開始します。それは私のメインのようなものです。誰かがいい練習だと言いました。
from FlaskApp import app
app.run()
InnerInit:このファイル青写真を登録し、アプリを作成します。
from flask import Flask, render_template
app = Flask(__name__)
from FlaskApp.modulo.main import map_module
app.register_blueprint(map_module)
Main.py:ここで私は、このモジュールのAPIサービスを公開します。
import os
otherImports...
static_folder = os.path.join(os.pardir, 'static')
map_module = Blueprint('map_module', __name__, static_folder=static_folder, static_url_path="/static")
@map_module.route("/map")
def map():
return render_template("index.html")
@map_module.route("/serviceData")
def serviceData():
r = robjects.r
r.source("R/TheFileIWant.R")
return "Ok."
私はindex.htmlファイルを提供することができ、それが実際に多くの動的要素を表示する...しかし、私はrpy2とRのファイルにアクセスすることはできません。私はこれが青写真と関係していると確信しています。なぜなら、青写真を作成する前に(プログラムをよりモジュラ化するために)、それはうまくいったからです。
これは私が 'http://localhost:5000/serviceData
'
(flaskEnv) [email protected]:~/Documents/FlaskApp$ python __init__.py
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
/home/python_user/Documents/flaskEnv/local/lib/python3.4/site-packages/rpy2/rinterface/__init__.py:186: RRuntimeWarning: Error in file(filename, "r", encoding = encoding) :
cannot open the connection
warnings.warn(x, RRuntimeWarning)
/home/python_user/Documents/flaskEnv/local/lib/python3.4/site-packages/rpy2/rinterface/__init__.py:186: RRuntimeWarning: In addition:
warnings.warn(x, RRuntimeWarning)
/home/python_user/Documents/flaskEnv/local/lib/python3.4/site-packages/rpy2/rinterface/__init__.py:186: RRuntimeWarning: Warning message:
warnings.warn(x, RRuntimeWarning)
/home/python_user/Documents/flaskEnv/local/lib/python3.4/site-packages/rpy2/rinterface/__init__.py:186: RRuntimeWarning: In file(filename, "r", encoding = encoding) :
warnings.warn(x, RRuntimeWarning)
/home/python_user/Documents/flaskEnv/local/lib/python3.4/site-packages/rpy2/rinterface/__init__.py:186: RRuntimeWarning:
warnings.warn(x, RRuntimeWarning)
/home/python_user/Documents/flaskEnv/local/lib/python3.4/site-packages/rpy2/rinterface/__init__.py:186: RRuntimeWarning: cannot open file 'R/rmethod.R': No such file or directory
warnings.warn(x, RRuntimeWarning)
[2017-03-24 01:36:28,320] ERROR in app: Exception on /serviceData [GET]
Traceback (most recent call last):
File "/home/python_user/Documents/flaskEnv/local/lib/python3.4/site-packages/flask/app.py", line 1982, in wsgi_app
response = self.full_dispatch_request()
File "/home/python_user/Documents/flaskEnv/local/lib/python3.4/site-packages/flask/app.py", line 1614, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/python_user/Documents/flaskEnv/local/lib/python3.4/site-packages/flask/app.py", line 1517, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/python_user/Documents/flaskEnv/local/lib/python3.4/site-packages/flask/_compat.py", line 33, in reraise
raise value
File "/home/python_user/Documents/flaskEnv/local/lib/python3.4/site-packages/flask/app.py", line 1612, in full_dispatch_request
rv = self.dispatch_request()
File "/home/python_user/Documents/flaskEnv/local/lib/python3.4/site-packages/flask/app.py", line 1598, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/home/python_user/Documents/FlaskApp/FlaskApp/modulo/main.py", line 19, in serviceData
r.source("R/rmethod.R")
File "/home/python_user/Documents/flaskEnv/local/lib/python3.4/site-packages/rpy2/robjects/functions.py", line 178, in __call__
return super(SignatureTranslatedFunction, self).__call__(*args, **kwargs)
File "/home/python_user/Documents/flaskEnv/local/lib/python3.4/site-packages/rpy2/robjects/functions.py", line 106, in __call__
res = super(Function, self).__call__(*new_args, **new_kwargs)
rpy2.rinterface.RRuntimeError: Error in file(filename, "r", encoding = encoding) :
cannot open the connection
Pythonは、現在のモジュールディレクトリを取得する方法を提供します。それらを代わりに使用してください。 –
さらに説明して解決策を教えてください。私はwebframeworksには非常に新しいので、Flaskでファイルを扱うのは簡単ではありません。 –
[docs](http://flask.pocoo.org/docs/0.12/blueprints/#blueprint-resource-folder)を読んでください。ありがとう。 –