Я пытаюсь расширить базовый проект фляги https://github.com/hack4impact/flask-base/tree/master/app. При этом используется шаблон фабрики приложений в app / init.py и blueprints.
Я изо всех сил пытаюсь заставить работать самые основные функции, поэтому теперь я пытаюсь следовать https://flask-admin.readthedocs.io/en/v1.1.0/_sources/quickstart.txt
В app / init.py у меня есть:
from flask_admin import Admin
....
adm = Admin(name='admin2')
def create_app(config_name):
app = Flask(__name__)
app.config.from_object(config[config_name])
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# not using sqlalchemy event system, hence disabling it
config[config_name].init_app(app)
....
RQ(app)
adm.init_app(app)
...
from .admin import admin as admin_blueprint
app.register_blueprint(admin_blueprint, url_prefix='/admin')
return app
шаблоны / admin / db.html:
<p>Hello world</p>
В представлениях администратора (https://github.com/hack4impact/flask-base/blob/master/app/admin/views.py) я добавил:
from flask_admin import Admin, BaseView, expose
from flask_admin.contrib.sqla import ModelView
from app import adm, db
class MyView(ModelView):
@expose('/')
# @login_required
def db(self):
return self.render('admin/db.html')
adm.add_view(MyView(User, db.session))
Когда я открываю:
127.0.0.1:5000/db
Я получил:
AssertionError: A blueprint's name collision occurred between <flask.blueprints.Blueprint object at 0x000000000586C6D8> and <flask.blueprints.Blueprint object at 0x00000000055AFE80>. Both share the same name "admin". Blueprints that are created on the fly need unique names.
Что я делаю неправильно?
редактировать:
следуя вашему совету, я перешел на:
adm = Admin(name='admin2',endpoint='/db')
Однако, если я попробую:
127.0.0.1:5000/db/db
Я получаю 404. Я предполагаю, что вы меняете обычный базовый маршрут администратора с «admin» на «db».
Что теперь?
Возможно, вам поможет Эта проблема.