Как добавить колбу-админ в мою существующую колбу - PullRequest
0 голосов
/ 30 мая 2019

В течение последних двух дней я пытался интегрировать флеш-админ с моим уже существующим флеш-приложением.Но проблема в том, что я продолжаю получать ту же ошибку:

builtins.AssertionError

AssertionError: Произошла коллизия имен между чертежами <flask.blueprints.Blueprint object at 0x000001D8F121B2B0> и <flask.blueprints.Blueprint object at 0x000001D8ECD95A90>.Оба имеют одно и то же имя «админ».Чертежи, созданные на лету, нуждаются в уникальных именах.

, и эта ошибка возникает из этого блока строк:

Приложение для основной колбы:

app.route("/admin")
def admin():  
    if not session.get('logged_in'):
        return redirect(url_for('login'))
    return adminScreen.adminPage()

admin.py

def adminPage(): 
    admin=Admin(app)
    admin.add_view(ModelView(User, db.session))
    admin.add_view(ModelView(Role, db.session))
    admin.add_view(ModelView(PointOfSale, db.session))
    return admin

И то, что я хочу сделать, - это управлять пользователями, которые у меня уже есть в моей базе данных, с помощью функций, предоставляемых flask-admin.

Так что мой вопрос;Есть ли простой способ направить flask-admin к моему уже существующему приложению колбы?

PS Я уже знаю, что есть это сообщение от мая 2018 , но я понятия не имею, какреализовать предоставленное решение.

Ответы [ 2 ]

0 голосов
/ 04 июня 2019

Вам не нужно создавать app.route ("/ admin") самостоятельно. Это обеспечивается встроенной схемой от flask-admin.

0 голосов
/ 31 мая 2019

Чтобы правильно использовать чертежи, вы должны обновить свое приложение, чтобы использовать фабрику приложений вместо глобальной переменной. В противном случае вы не можете иметь несколько экземпляров приложения. В существующем проекте это может потребовать некоторой работы, но оно того стоит. Пример фабрики может выглядеть так:

def create_app(config_filename):
    app = Flask(__name__)
    app.config.from_pyfile(config_filename)

    from yourapplication.model import db
    db.init_app(app)

    from yourapplication.views.admin import admin
    from yourapplication.views.frontend import frontend
    app.register_blueprint(admin)
    app.register_blueprint(frontend)

    return app

Вы можете найти больше информации здесь:

http://flask.pocoo.org/docs/1.0/patterns/appfactories/

...