笔者是看狗书入门的flask,狗书上对于flask-admin这个扩展并没有进行讲解,最近因为项目需要,学习使用flask-admin,瞬间体会到了flask开发的快速、扩展的强大

        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)

通过判断当前用户登录状态和当前登录的用户名进行权限设置

Flask-admin使用经验技巧总结的更多相关文章

  1. flask admin学习记录

    flask admin是flask框架中一个非常好用的后台管理框架,但是由于文档内容太少,经常遇到问题无法解决,这里记录一下 一简单的使用 from flask import Flask from f ...

  2. Flask admin Flask login 整合模板

    项目地址: https://github.com/WES6/supflask Flask admin 官方文档: https://flask-admin.readthedocs.io/en/lates ...

  3. [Evernote]印象笔记使用经验技巧

    一    软件使用      现在使用Windows客户端的印象笔记 + iPhone移动端印象笔记 + chrome浏览器剪藏插件.      在试用了很多云笔记后,还是选择了印象笔记,并且有许多的 ...

  4. 用 Flask 来写个轻博客 (31) — 使用 Flask-Admin 实现 FileSystem 管理

    Blog 项目源码:https://github.com/JmilkFan/JmilkFan-s-Blog 目录 目录 前文列表 扩展阅读 编写 FileSystem Admin 页面 Flask-A ...

  5. Django admin美化插件suit应用[原创]

    前言 由于比较懒,自己弄了一个用户验证,没有自己写后台,用了django自带的user认证,并通过admin直接进行管理,但默认的admin并不漂亮,于是使用了这个django-suit插件,效果对比 ...

  6. flask-admin章节四:flask session的使用

    1. 关于session flask session可能很多人根本都没有使用过,倒是cookie大家可能使用得比较多.flask cookie使用起来比较简单,就两个函数,读取和设置. 具体使用方式如 ...

  7. Django Admin 简单部署上线

    前言 打算为公司弄一个管理公用密码的平台,由于比较懒,就选择使用Django admin,默认的admin并不漂亮,于是我使用了这个django-suit插件来美化 如图: 是不是比原来的漂亮多了. ...

  8. flask 扩展之 -- flask-mail

    Flask-Mail 封装了 python 标准库 smtplib 包, 以便于更好的与 Flask 集成. 一. 安装 $ pip install flask-mail 二. 配置 及 初始化 Fl ...

  9. [flask/python/web] 解析flask web开发(Miguel著)一书第11章主页不显示博文表单的问题

    ---------------------------------------------以下内容2017.7.14更新---------------------------------------- ...

随机推荐

  1. DNS

  2. 非本地跳转之setjmp与longjmp

    非本地跳转(unlocal jump)是与本地跳转相对应的一个概念. 本地跳转主要指的是类似于goto语句的一系列应用,当设置了标志之后,可以跳到所在函数内部的标号上.然而,本地跳转不能将控制权转移到 ...

  3. 获取tomcat下路径

    import java.io.File; public class MainTest { public static void main(String[] args) { //获取是项目的绝对路径 S ...

  4. bzoj3223 文艺平衡树

    传送门 :http://www.lydsy.com/JudgeOnline/problem.php?id=3223 splay区间翻转的基础题,然而我还是调了一晚上(蒟蒻的悲哀) #include & ...

  5. 【原】十分钟搞定pandas

    http://www.cnblogs.com/chaosimple/p/4153083.html 本文是对pandas官方网站上<10 Minutes to pandas>的一个简单的翻译 ...

  6. QT笔记之VS2012 TCP传送文件

    注意:工程监理后,因为用到网路,所以要加入对应的库 服务器: .h #ifndef TCPFILE_H #define TCPFILE_H #include <QtWidgets/QWidget ...

  7. 【leetcode❤python】 189. Rotate Array

    #-*- coding: UTF-8 -*-#由于题目要求不返回任何值,修改原始列表,#因此不能直接将新生成的结果赋值给nums,这样只是将变量指向新的列表,原列表并没有修改.#需要将新生成的结果赋予 ...

  8. 您可能不曾注意的C++内置类型选择和使用的注意事项

    写在前面: 太忙了,好久没有写博客.这篇文章是在下读C++ Primer中文第五版(与以往版本相比,第五版的一大特色就是“为新的C++11标准重新撰写”——引自封皮)时的笔记,没有什么技术含量,只是作 ...

  9. Upload Files To FTP in Oracle Forms D2k

    Upload Files To FTP in Oracle Forms D2k Use following procedure to upload files to Ftp.   PROCEDURE ...

  10. Sublime Text的常用插件

    工欲善其事,必先利其器.好的插件会更多的帮助我们装逼. 最新感悟:也不要装太多的插件.有些无用的插件可以删除,有时反而臃肿.bloger下载官方最新稳定版st3 3126下载下来25M左右.安装十来个 ...