Как добавить контент на главную страницу с помощью Flask-Admin

Я использую flask-admin и хочу добавить панель инструментов на домашнюю страницу. Я обнаружил, что могу добавить новую страницу, используя:

admin = Admin(name='Dashboard', base_template='admin/my_master.html', template_mode='bootstrap3')

тогда:

admin.init_app(app)

и, наконец, я добавил my_master.html и добавил контент. Однако все это статично, как я могу добавить пользовательские данные в это представление?


person nycynik    schedule 23.03.2016    source источник


Ответы (2)


Я нашел ответ в документации: http://flask-admin.readthedocs.org/en/latest/api/mod_base/

Его можно переопределить, передав свой собственный класс представления конструктору администратора:

class MyHomeView(AdminIndexView):
    @expose('/')
    def index(self):
        arg1 = 'Hello'
        return self.render('admin/myhome.html', arg1=arg1)

admin = Admin(index_view=MyHomeView())

Кроме того, вы можете изменить корневой URL-адрес с /admin на / следующим образом:

admin = Admin(
    app,
    index_view=AdminIndexView(
        name='Home',
        template='admin/myhome.html',
        url='/'
    )
)

Значения по умолчанию для индексной страницы:

  • Если имя не указано, будет использоваться «Дом».
  • Если конечная точка не указана, по умолчанию используется admin. Маршрут URL-адреса по умолчанию — /admin.
  • Автоматически связывается со статической папкой. Шаблон по умолчанию: admin/index.html.
person nycynik    schedule 24.03.2016
comment
также xhr/ajax может быть лучшим решением для вашего проекта, если вы читаете это. Я обнаружил, что это еще один вариант, который хорошо работает для моей приборной панели. - person nycynik; 26.07.2017
comment
Привет @nycynik ... я пытаюсь переопределить страницу воздушного потока по умолчанию ... где вы получаете объект приложения для передачи в конструкторе администратора? Я также разместил вопрос здесь stackoverflow. com/questions/60864142/ - person user3531900; 30.03.2020
comment
Приложение представляет собой приложение Flask Parameters: app – Flask application instance, когда вы впервые запускаете приложение Flask, оно возвращает экземпляр приложения. - person nycynik; 31.03.2020
comment
Экземпляр приложения уже создан при запуске воздушного потока... я пытаюсь переопределить индексную страницу администратора по умолчанию... поэтому мне понадобится тот же экземпляр приложения, который был создан при запуске... Так что не знаю, как получить тот же экземпляр приложения - person user3531900; 31.03.2020

Согласно документации flask-admin используйте это:

from flask_admin import BaseView, expose

class AnalyticsView(BaseView):
    @expose('/')
    def index(self):
        return self.render('analytics_index.html', args=args)

admin.add_view(AnalyticsView(name='Analytics', endpoint='analytics'))
person 2 8    schedule 23.03.2016