Я хочу настроить базовый интерфейс администратора, используя flask-admin, и я хочу, чтобы все это было в чертеже. Вот минимальная версия мой код:Использование flask-admin с чертежами в колбе
#app.py
from flask import Flask
from bp import bp
app = Flask(__name__)
app.register_blueprint(bp)
if __name__ == "__main__":
app.run(debug=True)
#bp.py
from flask import Blueprint, current_app
from flask_admin import Admin
from flask_admin.contrib.pymongo import ModelView
import pymongo
conn = pymongo.MongoClient()
bp = Blueprint('bp', __name__,
template_folder='templates')
admin = Admin(current_app)
admin.add_view(ModelView(conn.my_db.my_collection))
При запуске python app.py
, он падает с RuntimeError: working outside of application context
, потому что admin
никоим образом не зацепил (или что слово используется для описания того), чтобы bp
. Обычно, можно было бы написать
@bp.route('/<page>')
def show(page):
pass
Но я не могу найти правильный декоратор в контексте создания Admin
объекта. Одна вещь, которую я пробовал, - сделать admin = Admin()
в bp.py
, импорт admin
в app.py
, а затем admin.app = app
в app.py
. Это работает, но мне кажется, что я разделяю логику в нескольких файлах, поэтому мне это не очень удобно. Каков питонический способ справиться с этой ситуацией?