flask擴充套件:後臺管理Flask-Admin
阿新 • • 發佈:2019-02-15
在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,現在有了對伺服器上的配置檔案的管理能力了。已經可以增刪改查了。