-1
清潔な解決策へのご意見をお待ちしております。私は、既存のアプリケーションにいくつかの静的ファイルを追加しようとしていますAssertionError:ビュー関数マッピングが既存のエンドポイント関数を上書きしています:EMPTY?
、他のファイルと静的フォルダがすでに設定されています。私はリストに基づいていくつかのルートを定義したい、目標は簡単にファイルを追加できるようにすることです。
問題は、私が代わりに作業プログラムのこれを受け、「エンドポイント機能は、」適切に検出されないということです。
出力:
{'/file1.js': <function func at 0x10aedfed8>, '/file2.js': <function func at 0x10aeea050>}
{'/file1.js': <function func at 0x10aedfed8>, '/file2.js': <function func at 0x10aeea050>}
Traceback (most recent call last):
File "flaskweird.py", line 29, in <module>
app.add_url_rule(d, '', app.serv_deps[d])
File "/Library/Python/2.7/site-packages/flask/app.py", line 62, in wrapper_func
return f(self, *args, **kwargs)
File "/Library/Python/2.7/site-packages/flask/app.py", line 984, in add_url_rule
'existing endpoint function: %s' % endpoint)
AssertionError: View function mapping is overwriting an existing endpoint function:
コード:奉仕する
from flask import Flask
app = Flask(__name__)
def gen_serv_dep(path):
fp = 'ui' + path # path always starts with/
with open(fp) as f:
content = f.read()
if path.endswith('.css'):
mime = "text/css"
elif path.endswith('.js'):
mime = "text/javascript"
else:
mime = "text"
def func():
#this.__name__ = path # doesn't change anything
return Response(response=content, status=200, mimetype=mime)
return func
deps = ['/file1.js', '/file2.js']
app.serv_deps = {}
for d in deps:
app.serv_deps[d] = gen_serv_dep(d)
for d in deps:
print(app.serv_deps)
app.add_url_rule(d, '', app.serv_deps[d])
@app.route('/')
def hello_world():
return 'Hello, World!'
サンプルファイル:
mkdir ui
echo "test1" > ui/file1.js
echo "test2" > ui/file2.js
フラスコ== 0.10.1
は、使用して検討しているフラスコの[ "青写真"](http://flask.pocoo.org/それは仕事ができるように静的ファイルの追加ソースを紹介するドキュメント/ 0.11 /青写真/)? – jonrsharpe
オム...おかげで、見える、私は。たぶん上書き関数名が空である理由を任意のアイデアを試してみましょう? – thomas
あなたは空を通過したので文字列をforループの 'add_url_rule'に複数回指定してください毎回一意の名前を指定してください – davidism