我认为你的第二个选项可能有一个可能的实现。例如,在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 1', endpoint='test1', category='Test'))
admin.add_view(MyView(name='Hello 2', endpoint='test2', category='Test'))
admin.add_view(MyView(name='Hello 3', endpoint='test3', category='Test'))
app.run()
它给你一个带有多个视图的下拉菜单。你可以将MyView
作为ModelView
实例化,并动态遍历表。即
from flask import Flask
from flask.ext.admin import Admin, BaseView, expose
class MyView(ModelView):
# Disable model creation
can_create = False
# Override displayed fields
column_list = ('field1', 'field2')
def __init__(self, session, **kwargs):
# If tables model is the same, otherwise, you need
# to generate ``TableModel`` dynamically
super(MyView, self).__init__(TableModel, session, **kwargs)
app = Flask(__name__)
admin = Admin(app)
for index, name, endpoint in get_dynamic_table_datalist():
admin.add_view(MyView(session=db.session, name=name,
endpoint=endpoint, category='Tables'))
app.run()
希望这会有所帮助。干杯..
不幸的是,这不允许用户在执行'app.run()'后创建/删除表格。 如果我将'admin.add_view()'方法移动到'app.run()'之后,瓶子将引发一个异常,说明应用程序初始化后无法添加视图。 – Rafael