2014-02-27 64 views
3

例如:如何將flask-admin添加到藍圖?

from flask import Flask 
from flask.ext.admin import Admin, BaseView, expose 

class MyView(BaseView): 
    @expose('/') 
    def index(self): 
     return self.render('index.html') 

app = Flask(__name__) 

admin = Admin(app) 
admin.add_view(MyView(name='Hello')) 

app.run() 

,但是,如果我需要一個新的文件,名爲「views.py」,我怎麼能添加視圖到views.py來管理? 我需要使用藍圖嗎?

回答

4

你不需要藍圖。在views.py添加對admin對象,你在你的主要項目中定義的導入:

from projectmodule import admin 
from flask.ext.admin import BaseView, expose 

class MyView(BaseView): 
    @expose('/') 
    def index(self): 
     return self.render('index.html') 

admin.add_view(MyView(name='Hello')) 

,並在主projectmodule文件使用:

from flask import Flask 
from flask.ext.admin import Admin 


app = Flask(__name__) 
admin = Admin(app) 

# import the views 
import views 

app.run() 

例如你在後面加上import views設定的線admin = Admin(app)

4

我對這個問題已經很晚了,但無論如何...我的猜測是你想要使用應用程序工廠模式並使用Flask-Admin。有關於潛在問題的nice discussion。我用了一個很醜陋的解決方案,在初始化 .py文件實例化瓶 - 管理:

from flask_admin.contrib.sqla import ModelView 

class UserModelView(ModelView): 

    create_modal = True 
    edit_modal = True 
    can_export = True 

def create_app(config_name): 
    app = Flask(__name__) 
    app.config.from_object(config[config_name]) 
    db.init_app(app) 


    # import models here because otherwise it will throw errors  
    from models import User, Sector, Article 

    admin.init_app(app) 
    admin.add_view(UserModelView(User, db.session))  

    # attach blueprints 
    from .main import main as main_blueprint 
    app.register_blueprint(main_blueprint) 

    from .auth import auth as auth_blueprint 
    app.register_blueprint(auth_blueprint, url_prefix='/auth') 

    return app 
3

對於項目中,我實際上是由一個子類藍圖的支持燒瓶管理:

from flask import Blueprint 
from flask_admin.contrib.sqla import ModelView 
from flask_admin import Admin 

class AdminBlueprint(Blueprint): 
    views=None 


    def __init__(self,*args, **kargs): 
     self.views = [] 
     return super(AdminBlueprint, self).__init__('admin2', __name__,url_prefix='/admin2',static_folder='static', static_url_path='/static/admin') 


    def add_view(self, view): 
     self.views.append(view) 

    def register(self,app, options, first_registration=False): 
     print app 
     admin = Admin(app, name='microblog', template_mode='adminlte') 

     for v in self.views: 
      admin.add_view(v) 

     return super(AdminBlueprint, self).register(app, options, first_registration) 

欲瞭解詳細信息,請點擊此處閱讀我的博客:http://www.sadafnoor.com/blog/how-to-add-flask-admin-to-a-blueprint/