flask項目結構(六)快速開發后台flask-admin


簡介:

Flask-admin 相當django的xadmin吧!

快速裝配一個后台用來管理數據。

Flask-admin也是有使用局限性的,他只適合開發小型快速的應用,不適合那種大型並發性高,邏輯復雜的應用。首先,對於大型應用都是前后端分離的,加快訪問速度,而且后端裝配,尤其是這種動態生成頁面的速度更慢。

需要安裝Flask-Admin,Flask-BabelEx,

一:導入admin

1.導入

from flask import Flask
from app.main.views import *
from app.app01.views import *
from app.app02.views import *
from flask_admin import Admin     #此行新加

app = Flask(__name__)
 admin = Admin(app, name='管理后台', template_mode='bootstrap3') #此行新加

app.register_blueprint(main)
app.register_blueprint(main,url_prefix='/index')
app.register_blueprint(app01,url_prefix='/app01')
app.register_blueprint(app02,url_prefix='/app02')
app.register_blueprint(app01,url_prefix='/app03')
app.register_blueprint(app02,url_prefix='/app04')
app.register_blueprint(app02)

@app.teardown_appcontext
def shutdown_session(exception=None):
    db_session.remove()
    
if __name__=='__main__':
  app.run()

只要增加這兩行就可以了。

2.測試

訪問http://127.0.0.1:5000/admin/

就可以看到了。

3.中文標題

admin = Admin(app, name='管理后台', template_mode='bootstrap3') #此行新加
這里的name就是后台的標題。

二:注冊model

1.引入:

from flask_admin.contrib.sqla import ModelView

頁首引入即可

2.注冊model

admin.add_view(ModelView(public, db_session,name='test'))

一行引入一個model,既表。

public是聲明的model類名。

db_session,是在config中聲明的數據庫連接。

name是小標題。

3.測試:

比剛才多了一個public

點進去以后

有創建,修改,刪除這樣的功能。

三:漢化

1.引入Flask-BabelEx

from flask_babelex import Babel

2.設置

babel = Babel(app)
app.config['BABEL_DEFAULT_LOCALE'] = 'zh_CN'

在app = Flask(__name__)后面插入就可以了

3.測試

四:把表名改中文

1.原代碼:

admin.add_view(ModelView(public, db_session))

2.新代碼:

admin.add_view(ModelView(public, db_session,name='用戶管理'))

3.說明:

 在注冊表給后台的時候,加上name屬性,就改為中文了。

五:把列名改為中文

1.簡介:

我們的列名是ModelView自動讀取的,如果要修改列名,那么我們就新建一個類繼承ModelView,然后在我們的類中修改。

2.建立:

class MyPublic(ModelView):

    column_labels = {
        'id':'序號',
        'public_name' : '用戶名',
        'public_email':'電子郵箱',
    }
    column_list = ('id', 'public_name','public_email')
    def __init__(self, session, **kwargs):
        super(MyPublic, self).__init__(public, session, **kwargs)

為了方便對照model,我把這部分代碼和model聲明放在一起了。

3.修改

因為是每個表都要分開設置列名,使用新的繼承類對應不同的表。所以,引入方式也要修改。

原代碼:

admin.add_view(ModelView(public,db_session,name='用戶管理'))

新代碼:

admin.add_view(MyPublic(db_session,name='用戶管理'))

說明:

我們新建的類已經繼承了ModelView,並在內部關聯了public類,所以注冊的時候要改ModeView為MyPublic,並不需要聲明表名類了。 

六:菜單下拉

1.

# Add views
admin.add_view(ModelView(Point, db.session, category='Points'))
admin.add_view(ModelView(MultiPoint, db.session, category='Points'))
admin.add_view(ModelView(Polygon, db.session, category='Polygons'))
admin.add_view(ModelView(MultiPolygon, db.session, category='Polygons'))
admin.add_view(ModelView(LineString, db.session, category='Lines'))
admin.add_view(ModelView(MultiLineString, db.session, category='Lines'))

 

2.

3.

 

七:

1.

2.

3.

 

八:

1.

2.

3.

 

九:

1.

2.

3.

 

十:

1.

2.

3.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM