导入包

  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后台管理系统总结的更多相关文章

  1. Svelte Ui Admin后台管理系统|svelte3+svelteUI中后台前端解决方案

    基于svelte3.x+svelteKit+svelte-ui网页后台管理系统SvelteAdmin. Svelte-Ui-Admin 基于svelte3.x+svelteKit+vite3+echa ...

  2. admin快速搭建后台管理系统

    一.基于admin后台管理系统的特点: 权限管理:权限管理是后台管理系统必不可少的部分,拥有权限管理,可以赋予用户增删改查表权限(可以分别赋予用户对不同的表有不同的操作权限): 前端样式少:后台管理主 ...

  3. ace后台管理系统扁平化框架

    Bootstrap ACE后台管理界面模板(扁平化) 所属分类:后台模板 文件大小:1.22 MB 阅读:236697次 下载:55929次 来源:www.daimajiayuan.com 分享到:更 ...

  4. 自定义django的admin后台action

    django的admin后台管理系统中自带了一个批量删除所选对象的action. 我们还可以添加自定义的action来实现其它类似的功能,如批量修改某个字段的功能.简单的,例如将文章批量标记为已发布的 ...

  5. 玩转Django2.0---Django笔记建站基础八(admin后台系统)

    第八章 admin后台系统 admin后台系统也成为网站后台管理系统,主要用于对网站前台的信息进行管理,如文字.图片.影音和其他日常使用文件的发布.更新.删除等操作,也包括功能信息的统计和管理,如用户 ...

  6. Django(66)admin后台管理注册用户

    前言 我们使用django创建用户可以使用注册接口的方式,也可以使用django自带的后台管理系统,这里就介绍使用后台管理系统创建用户 admin后台管理系统 在使用之前我们可以使用第三方的插件,来美 ...

  7. Admin Panel – 非常漂亮的后台管理系统模板

    网站或者应用系统的管理后台的设计虽然不像前台界面那样要求设计精美,但是也需要有清晰的管理模块划分,下面分享的这个后台管理模板的设计非常漂亮,特别是导航部分,头部还有未读的短消息和提醒的条数显示.赶紧下 ...

  8. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(17)-LinQ动态排序

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(17)-LinQ动态排序 首先修复程序中的一个BUG这个BUG在GridPager类中,把sord修改为s ...

  9. django后台管理系统(admin)的简单使用

    目录 django后台管理系统的使用 检查配置文件 检查根urls.py文件 启动项目,浏览器输入ip端口/admin 如: 127.0.0.1/8000/admin 回车 注册后台管理系统超级管理 ...

随机推荐

  1. LeetCode 101. Symmetric Tree(镜像树)

    Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center). For e ...

  2. linux 结束某个进程,并且结束子进程

    pid=49184 childid=`ps -ef|grep $pid|grep -v grep|awk '{printf " %s",$2 }'` kill -9 $childi ...

  3. MySQL慢查询参数

    开启mysql慢查询日志 修改/etc/mysql/my.cnf配置文件,添加: [mysqld]slow_query_log = onslow_query_log_file = /var/lib/m ...

  4. Postman中get

    :Postman中get接口实战讲解(接口测试介绍,接口测试流程,头域操作) Postman的使用 postman工具是软件开发和测试人员常用的一种工具,常用来做接口测试,它虽然也有抓取接口等功能,但 ...

  5. SQL - 外链接和内连接

    外链接和内连接: leetcode 题目:编写一个 SQL 查询,满足条件:无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息: 第一次的答案:(错误) select ...

  6. [转帖]亚马逊发布自主64核心ARM处理器:单核性能远超铂金至强

    亚马逊发布自主64核心ARM处理器:单核性能远超铂金至强 https://news.mydrivers.com/1/660/660383.htm 不知道真假 看样子比华为的鲲鹏920 要牛B . 亚马 ...

  7. spring的exception

    Springmvc的对于异常类进行统一处理的方法 一.局部异常统一处理 当异常出现时,将抛给异常处理方法,异常处理发放接收到异常数据,进行处理,统一到异常页面 @ExceptionHandler:通过 ...

  8. 手把手教你做JavaWeb项目:登录模块

    现如今,无论是客户端还是移动端,无论是游戏登陆还是社交平台登陆,无处不在的“登陆”.那么你知道怎么制作吗?今天就为你娓娓道来: 用户登录 在各大信息管理系统中,登录功能是必不可少的,他的作用就是验证用 ...

  9. 实现一个 web 服务器

    在 system1 上配置一个站点 http://system1.group8.example.com/,然后执行下述步骤: 1.从 http://server.group8.example.com/ ...

  10. 代理服务器支持https(转)

    原标题:让代理服务器支持HTTPS很难吗?    http://www.site-digger.com/html/articles/20151203/107.html