1. 程式人生 > >flask擴充套件:後臺管理Flask-Admin

flask擴充套件:後臺管理Flask-Admin

在Flask提供了一個擴充套件模組幫助我們快速搭建一個後臺管理系統,這個模組就是--Flask-Admin

首先需要執行下面的程式碼來初始化這個模組

admin = Admin(app=app, name='後臺管理系統')


if __name__ == '__main__':
    app.run(debug=True)

現在這個後臺管理還是空的。 下面我們一點一點的填充需要的功能。

資料庫管理

from flask_admin.contrib.sqla import ModelView


class MyModelView(ModelView):

    def is_accessible(self):
        return current_user.has_role('Admin')

    def inaccessible_callback(self, name, **kwargs):
        # redirect to login page if user doesn't have access
        return redirect(url_for('login', next=request.url))
# 初始化Flask-Admin
admin = Admin(app, name='env manager')
admin.add_view(MyModelView(User, db.session))
admin.add_view(MyModelView(Role, db.session))

自己實現一個MyModelView 並繼承Flask-Admin的ModelView, 重寫兩個方法來進行許可權控制。判斷當前使用者是否為Admin使用者,如果不是就重定向到login頁面去。

接下來使用admin.add_view方法將model檢視新增進來,分別新增User,Role表,這些表是之前就通過Flask-SQLAlchemy建立好的。 然後再去訪問一下剛才的頁面。你會發現這兩個表的檢視已經新增我們的admin頁面中了。

你可以針對每一個表進行增刪查改的操作。假如你要定製一些自己的東西,可以覆蓋ModelView中的部分方法或屬性。如下:

# Disable model creation
    can_create = False

    # Override displayed fields
    column_list = ('name', 'email')

覆蓋ModelView這兩個屬性,可以禁止新增操作並且只顯示name和email這兩列。

定製檢視

from flask_admin import Admin, expose, BaseView

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

    @expose('/user_manager')
    def user_manager(self):
        return self.render('admin/user.html')


# 初始化Flask-Admin
admin = Admin(app, name='env manager')
admin.add_view(MyModelView(User, db.session))
admin.add_view(MyModelView(Role, db.session))
admin.add_view(UserView(name='user_manager'))

上面繼承Flask-Admin的BaseView並提供了兩個用expose裝飾的方法。這裡有一個需要注意的。每一個自定義檢視必須提供一個@expose('/') 的index方法。否則會報錯。之後我們再次使用admin.add_view方法進行新增檢視。

伺服器檔案管理

有時候需要對伺服器儲存的或者產生的一些靜態檔案進行管理。

新增一個檔案管理功能。

from flask_admin.contrib.fileadmin import FileAdmin

admin.add_view(FileAdmin(os.path.join(os.path.dirname(__file__), '..', 'templates'), name='檔案'))

使用FileAdmin方法,第一個引數是檔案目錄的路徑,第二個引數是顯示的名字。

OK,現在有了對伺服器上的配置檔案的管理能力了。已經可以增刪改查了。