2016-03-23 5 views
1

Ich benutze Flask-Admin, und ich möchte ein Dashboard auf der Homepage hinzufügen. Ich fand ich eine neue Seite hinzufügen, mit:Wie füge ich Inhalt zur Indexseite mit Flask-Admin hinzu

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

dann:

admin.init_app(app) 

und schließlich fügte ich my_master.html und hinzugefügter Inhalt. Es ist jedoch alles statisch, wie kann ich benutzerdefinierte Daten zu dieser Ansicht hinzufügen?

Antwort

4

ich die Antwort in der Dokumentation: http://flask-admin.readthedocs.org/en/latest/api/mod_base/

Es Ihre eigene Sicht Klasse auf den Admin-Konstruktor außer Kraft gesetzt werden kann, indem man:

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

admin = Admin(index_view=MyHomeView()) 

Sie können auch die Root-URL von/admin in/mit den folgenden ändern:

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

Standardwerte für die Indexseite sind:

  • Wenn ein Name nicht vorgesehen ist, ‚Home‘ verwendet wird.
  • Wenn kein Endpunkt bereitgestellt wird, wird standardmäßig admin verwendet. Standard-URL route ist/admin.
  • Assoziiert automatisch mit statischem Ordner. Standardvorlage ist admin/index.html
+0

auch xhr/ajax könnte die beste Lösung für Ihr Projekt sein, wenn Sie dies lesen. Ich fand das eine weitere Option, die für mein Dashboard gut funktionierte. – nycynik

1

Nach flask-admin documentation Verwendung dieses:

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

Dies zeigt nicht, wie Daten an die Seite übergeben werden. – nycynik