2016-03-23 3 views
1

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

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

затем:

admin.init_app(app) 

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

ответ

4

Я нашел ответ в документации: 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='/' 
    ) 
) 

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

  • Если имя не указано, будет использоваться «Home».
  • Если конечная точка не указана, будет использоваться по умолчанию для admin. URL-адрес URL по умолчанию - admin.
  • Автоматически ассоциируется со статической папкой. Шаблон по умолчанию - admin/index.html
+0

также xhr/ajax может быть лучшим решением для вашего проекта, если вы читаете это. Я обнаружил, что это еще один вариант, который хорошо работал для моей приборной панели. – nycynik

1

Согласно flask-admin documentation использования этого:

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')) 
+1

Это не показывает, как передавать данные на страницу. – nycynik