6

例えば:

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を admin に追加できますか? 設計図を使用する必要がありますか?

4

4 に答える 4

8

私のプロジェクトでは、実際にフラスコ管理をサポートするブループリントの子クラスを作成しました。

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):
        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://blog.sadafnoor.me/blog/how-to-add-flask-admin-to-a-blueprint/

于 2016-09-21T13:55:56.253 に答える
7

私はこの質問に非常に遅れていますが、とにかく...私の推測では、アプリケーション ファクトリ パターンを使用し、Flask-Admin を使用したいと考えています。根本的な問題についての素晴らしい議論があります。init .py ファイルで Flask-Admin をインスタンス化する、非常に醜いソリューションを使用しました。

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
于 2015-11-19T13:12:24.747 に答える
5

そのための設計図は必要ありません。メイン プロジェクトで定義し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()

たとえば、sets という行のimport views に追加しますadmin = Admin(app)

于 2014-02-27T22:46:24.113 に答える