Flask学习记录之Flask-Admin
相信用过Django框架的都不会忘记它强大的Admin功能,Flask-admin是一款能够与Django Admin所媲美的扩展,能够快速创建Web管理界面,实现了用户、文件增删改查等常用功能;也可以通过修改模板文件来定制管理页面.
初始化:
from flask import Flask
from flask_admin import Admin app = Flask(__name__) admin = Admin(app)
# Add administrative views here
#也可以指定name属性来命名admin = Admin(app, name='Super Administrator')
app.run()
Flask-admin将后台的每一个菜单选项看作一个View对象,View对象要通过flask-admin实例对象注册后才能显示
from flask_admin import Admin, BaseView, expose #继承一个BaseView定义一项管理菜单
class MyView(BaseView):
#127.0.0.1:5000/admin/
@expose('/')
def index(self):
return self.render('index.html') #添加一个Hello菜单,这个视图可以在外部通过url_for('myview.index')生成url
admin.add_view(MyView(name='Hello'))
#添加一个在Test标签下添加一个Hello 1菜单,路由为test1
#这个视图在外部通过url_for('test1.index')生成url
admin.add_view(MyView(name='Hello 1', endpoint='test1', category='Test'))
admin.add_view(MyView(name='Hello 2', endpoint='test2', category='Test'))
admin.add_view(MyView(name='Hello 3', endpoint='test3', category='Test'))
效果如图:
安全
flask-admin不提供后台的安全认证,默认情况下,管理界面是完全公开的,不过你可以自己实现认证的逻辑,或者使用flask-login提供的.在定义View时覆盖父类的is_accessible()方法 ,返回False则禁止访问
class MyView(BaseView):
def is_accessible(self):
return login.current_user.is_authenticated()
模型
flask-admin可以通过创建ModelView
类实例实现模型的管理
from flask.ext.admin.contrib.sqla import ModelView
from .models import User # Flask and Flask-SQLAlchemy initialization here admin = Admin(app)
admin.add_view(ModelView(User, db.session))
可以通过继承ModelView来定制模型管理内容
from flask_admin.contrib.sqla import ModelView # Flask and Flask-SQLAlchemy initialization here class MyView(ModelView):
# 是否允许创建
can_create = False # 显示的字段
column_list = ('login', 'email') def __init__(self, session, **kwargs):
# You can pass name and other parameters if you want to
super(MyView, self).__init__(User, session, **kwargs) admin = Admin(app)
admin.add_view(MyView(db.session))
1.指定可搜索的字段:
column_searchable_list = ('name', 'email') 或者column_searchable_list = (User.name, User.email)
2.指定过滤器:
column_filters = ('user', 'email') 或者
column_filters = (BooleanEqualFilter(User.name, 'Name'))
3.设置内联对象:
时创建或修改时可以同时创建内联对象,内联对象必须是与这个对象建立了关系的.如图,创建新用户时可以同时创建他的文章,如图
(1)inline_models = (Article,) 直接创建
(2)inline_models = [(Article, dict(form_columns=['title']))]指定内联对象显示的字段,这里只显示title
(3)Django方式创建内联对象:
class MyInlineModelForm(InlineFormAdmin):
form_columns = ('title', 'date') class MyModelView(ModelView):
inline_models = (MyInlineModelForm(MyInlineModel),)
文件管理
from flask.ext.admin.contrib.fileadmin import FileAdmin import os.path as op # Flask setup here admin = Admin(app) path = op.join(op.dirname(__file__), 'static')
admin.add_view(FileAdmin(path, '/static/', name='Static Files'))
Flask学习记录之Flask-Admin的更多相关文章
- [ZHUAN]Flask学习记录之Flask-SQLAlchemy
From: http://www.cnblogs.com/agmcs/p/4445583.html 各种查询方式:http://www.360doc.com/content/12/0608/11/93 ...
- Flask学习记录之Flask-SQLAlchemy
Flask-SQLAlchemy库让flask更方便的使用SQLALchemy,是一个强大的关系形数据库框架,既可以使用orm方式操作数据库,也可以使用原始的SQL命令. Flask-Migrate ...
- Flask学习记录之Flask-Login
Flask-Loging 可以方便的管理用户会话,保护路由只让认证用户访问 http://flask-login.readthedocs.org/en/latest/ 一.初始化Flask-Login ...
- Flask学习记录之MarkDown编辑文本
为了让网页支持markdown编辑文本,使用如下了4个库 PageDown : 在前端提供一个可以实时将markdown内容转换成html文本进行效果预览的编辑器 Flask-PageDown: 这个 ...
- Flask学习记录之Flask-Migrate
一.配置Flask-Migrate from flask.ext.migrate import Migrate, MigrateCommand migrate = Migrate(app,db) #第 ...
- Flask学习记录之Flask-WTF
Flask-wtf时Wtforms库的flask框架扩展,能够方便的处理Web表单 一.定义一个web表单 使用flask-wtf时,每个web表单都由一个继承自flask.ext.wtf.Form的 ...
- Flask学习记录之Flask-Moment
Moment.js 是一个简单易用的轻量级JavaScript日期处理类库,提供了日期格式化.日期解析等功能.它支持在浏览器和NodeJS两种环境中运行.此类库能够 将给定的任意日期转换成多种不同的格 ...
- Flask学习记录之Flask-Mail
Flask-Mail可以连接到配置中的SMTP服务器,进行邮件发送,如果没有进行SMTP服务器的配置,将会默认连接到localhost上的 一.配置及初始化 (1)flask应用配置 #配置选项 MA ...
- Flask学习记录之使用Werkzeug散列密码
数据库中直接存放明文密码是很危险的,Werkzeug库中的security能够方便的实现散列密码的计算 security库中 generate_password_hash(password,metho ...
随机推荐
- C#数据类型汇总
通用类型系统 C#中,变量是值还是引用仅取决于数据类型 所有的数据类型都是对象.因为它们具有自己ide方法和属性 int int_value = 101; //调用*int_value*的比较方法与整 ...
- startActivityForResult案例
Info:startActivty 与 startActivityForResult区别 (1):startActivity 启动了其他Activity之后不会再回调过来,此时启动者与被启动者在启动后 ...
- [LeetCode 120] - 三角形(Triangle)
问题 给出一个三角形,找出从顶部至底部的最小路径和.每一步你只能移动到下一行的邻接数字. 例如,给出如下三角形: [ [2], [3,4], [6,5,7], [4,1,8,3] ] 从顶部至底部的最 ...
- 负电压基准电路(-2.5V/-5V电压基准)
运算放大器大多数都是双电源的,这就要求有正负基准电压,除了从稳压源直接输出电压外,很多时候都是一个单电源对整个电路供电,这就要求要把正电压转换成负电压,从而产生正负的电压基准,对双电源运算放大器进行供 ...
- IBM总裁郭士纳总结的四类人
IBM总裁郭士纳总结的四类人, 您属于哪一种呢-欢迎就此话题发表评论 积极采取行动促使事件发生的人 被动接受所发生事件的人 对事件持旁观者心态的人 什么事都不关心的人
- 【HDOJ】1493 QQpet exploratory park
超水的动态规划.最后要对概率求Sigma. #include <cstdio> #include <cstring> #include <cstdlib> #def ...
- ss命令,显示socket状态
ss命令用于显示socket状态. 他可以显示PACKET sockets, TCP sockets, UDP sockets, DCCP sockets, RAW sockets, Unix dom ...
- 设计模式(九):Composite组合模式 -- 结构型模式
1. 概述 在数据结构里面,树结构是很重要,我们可以把树的结构应用到设计模式里面. 例子1:就是多级树形菜单. 例子2:文件和文件夹目录 2.问题 我们可以使用简单的对象组合成复杂的对象,而这个复杂对 ...
- Andoid实现手动绘图
public class MainActivity extends Activity { int width,height; private GameView gameview; private Ca ...
- HDU3473--Minimum Sum(静态区间第k大)
Minimum Sum Time Limit: 16000/8000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tota ...