日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

17,Flask-admin后台管理系统总结

發布時間:2023/12/13 综合教程 22 生活家
生活随笔 收集整理的這篇文章主要介紹了 17,Flask-admin后台管理系统总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

導入包

  from flask_admin import Admin,BaseView,expose,AdminIndexView
  from flask_admin.contrib.sqla import ModelView

    

   

最終效果圖

 一、模型視圖

    1.管理新聞、管理公告、管理文件、管理展示欄是四個與數據庫表同步的模型視圖,如果你想要在后臺管理程序中數據庫中的表在初始化admin后僅需一句代碼

admin = Admin(app)
admin.add_view(ModelView(User, db.session))

    2.但是有時候flask-admin的默認設置并不能滿足你的條件,如果我們在后臺只打算讓表中固定的幾列數據顯示,這時候我們就不能直接像上面那樣直接ModelView,我們需自定義一個類并繼承ModelView,并重寫一些代碼,把想要顯示出來的列名寫在column_list中

class MyV1(ModelView):

    column_list = ('id', 'title','timestamp','count','content')
    def __init__(self, session, **kwargs):
        super(MyV1, self).__init__(News, session, **kwargs)

然后在程序中再加入代碼如下,然后就OK了

admin.add_view(MyV1(db.session,name = u'管理新聞'))

    3.如果我們使用flask做網站是給自己使用,后臺和數據庫中同步的列名是英文顯示沒有多大影響,自己寫的數據庫難道還不知道什么意思,但是當我們是寫給非技術人員使用時,他們可能不能理解每個列名是什么意思,所以現在我們就需要將列名中文化,也是需要重寫column_labels

class MyV1(ModelView):

    column_labels = {
        'id':u'序號',
        'title' : u'新聞標題',
        'timestamp':u'發布時間',
        'count':u'瀏覽次數',
        'content':u'新聞內容'
    }
    column_list = ('id', 'title','timestamp','count','content')
    def __init__(self, session, **kwargs):
        super(MyV1, self).__init__(News, session, **kwargs)

    4.有時候當同步數據庫表成功后,擴展會有一個默認新建數據插入數據庫表中的功能,但是我們有時候發表博客、新聞這些需要排版的文章但是默認的新建數據不支持這個功能怎么辦,我們可以把默認創建功能先關掉。

class MyV1(ModelView):
    can_create = False

    column_labels = {
        'id':u'序號',
        'title' : u'新聞標題',
        'timestamp':u'發布時間',
        'count':u'瀏覽次數',
        'content':u'新聞內容'
    }
    column_list = ('id', 'title','timestamp','count','content')
    def __init__(self, session, **kwargs):
        super(MyV1, self).__init__(News, session, **kwargs)

二、創建視圖

  上面我們說到講默認創建功能關掉,但是我們怎么新建數據呢,我們可以自己寫一個視圖,關聯自己的模板,再在模板中集成富文本。

class MyNews(BaseView):
    @expose('/', methods=['GET', 'POST'])
    def index(self):
        form = NameForm()
        return self.render('donews.html', form=form)

  然后再程序中加入代碼

admin.add_view(MyNews(name=u'發表新聞'))

三、對主頁面的修改

  flask-admin默認主頁面標題是Home,而且界面一片空白,由于各種需要,我們需要對這些進行更改,參考以下代碼

admin = Admin(
    app,
    index_view=AdminIndexView(
        name='導航欄',
        template='welcome.html',
        url='/admin'
    )
)

將標題修改為導航欄,并將主頁設置為welcome.html,進入后臺對應的url也可以修改

四、權限設置

  一般后臺并不是對所有用戶開放的,所有牽扯到了管理員權限,這一塊我是依靠flask-login這個擴展實現的,關于flask-login會再寫一遍進行總結,新加代碼如下

class MyV1(ModelView):
    def is_accessible(self):
        if current_user.is_authenticated and current_user.username == "admin":
            return True
        return False
    can_create = False

    column_labels = {
        'id':u'序號',
        'title' : u'新聞標題',
        'timestamp':u'發布時間',
        'count':u'瀏覽次數',
        'content':u'新聞內容'
    }
    column_list = ('id', 'title','timestamp','count','content')
    def __init__(self, session, **kwargs):
        super(MyV1, self).__init__(News, session, **kwargs)
class MyNews(BaseView):
    def is_accessible(self):
        if current_user.is_authenticated and current_user.username == "admin":
            return True
        return False
    @expose('/', methods=['GET', 'POST'])
    def index(self):
        form = NameForm()
        return self.render('donews.html', form=form)

通過判斷當前用戶登錄狀態和當前登錄的用戶名進行權限設置



總結

以上是生活随笔為你收集整理的17,Flask-admin后台管理系统总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。