如何将Flask-Admin BaseView注册为模块

时间:2015-05-07 19:34:48

标签: python flask flask-admin

如何在我的应用程序中将Flask-Admin BaseView注册为模块?每次我运行我的应用程序时都会出现蓝图冲突错误!

我也知道Flask-Admin中的ModelView,但我想将模型和视图彼此分开。

  

init.py

from flask import Flask
import flask_admin as admin
from flask.ext.sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
db = SQLAlchemy(app)


from views.user import user_view, UserView

admin = admin.Admin(app, name='Backend')
user_view.add_view(UserView)

db.create_all()
  

包文件夹后端

├── __init__.py
├── models.py
├── static
├── templates
│   └── user
│       └── index.html
└── views
    ├── __init__.py
    └── user.py
  

models.py

from . import db


class UserModel(db.Model):
    '__tablename__' == "User"
    id = db.Column(db.Integer, primary_key=True)
    first_name = db.Column(db.String(100))
    last_name = db.Column(db.String(100))
    username = db.Column(db.String(80), unique=True)
    email = db.Column(db.String(120), unique=True)

    # Required for administrative interface. For python 3 please use __str__ instead.
    def __unicode__(self):
        return self.username
  

user.py

from flask_admin import Admin, BaseView, expose
from Backend import app

user_view = Admin(app, name="User")


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

1 个答案:

答案 0 :(得分:1)

所以我回答我自己的问题。这只是一个谬论。

我只需按照here所述导入UserView。并且还需要在视图中导入包应用程序。

所以这是__init__.pyviews/user.py之间的关系。

  

<强>初始化的.py

from flask import Flask
import flask_admin as admin
from flask.ext.sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
db = SQLAlchemy(app)


from views.user import UserView

admin = admin.Admin(app, name='Backend')
admin.add_view(UserView(name="User"))

db.create_all()
  

视图/ user.py

from Backend import app
from flask_admin import BaseView, expose


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

此部分from Flask Documentaion:非常有用。

  

循环进口:

     

每个Python程序员都讨厌它们,但我们只是添加了一些:   循环导入(这是两个模块相互依赖的时候   这种情况views.py取决于 init .py)。请注意,这是一个   一般来说不好的主意但这里实际上很好。原因就在于此   是我们实际上没有使用 init .py中的视图   确保模块已导入,我们在底部执行此操作   文件。