Flask 拓展(flask-admin)
# 下载安装包
pip install Flask-BasicAuth
pip install Flask-Babel
pip install flask-admin
1. Flask-BasicAuth实现Authentication # 登录认证
Demo: 基础使用方式
from flask import Flask from flask_basicauth import BasicAuth # 登陆权限认证 from flask_babelex import Babel # 解析为中文 app = Flask(__name__) app.config['BASIC_AUTH_USERNAME'] = 'admin' app.config['BASIC_AUTH_PASSWORD'] = '123456' app.config['BASIC_AUTH_FORCE'] = True # 整个站点都验证 babel = Babel(app) basic_auth = BasicAuth(app) @app.route('/') def index(): return "hello world" if __name__ == '__main__': app.run()
2. 扩展Flask-admin,基础搭建
from flask_admin import Admin 1. 初始化Admin 管理程序 admin = Admin(app) 2. 设置页面展示栏 admin.add_view(MyV1(db.session,name = u'管理新闻')) 或 admin.add_view(WV(db.session, category='展示栏名称', endpoint='展示栏下/目录')) 3. 展示页面信息 from flask_admin import expose from flask_admin.contrib.sqla import ModelView class BView(ModelView): # 常用属性 can_create = False # 是否创建 can_edit = True # 是否编辑 can_delete = False # 是否删除 # 转换字段名为中文 column_labels = {"数据库字段名":"中文"} # 字段值int转化中文 column_choices = {"数据库字段名":[(0, "否"), (1, "是")]} # 搜索条件 column_searchable_list = ['数据库字段名'] # 筛选条件 column_filters = ['数据库字段名'] # 列表页字段显示值 column_list = ("数据库字段名") def __init__(self, session, **kwargs): super(类名, self).__init__(表名, session, **kwargs) # 视图 @expose('/index/') def index(self): return self.render('index.html')
3. 实践
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
# 以项目的方式书写 import os import sys BASE_DIR = os.path.dirname(os.path.abspath(__file__)) sys.path.append(BASE_DIR) from flask import Flask, redirect from flask_admin import Admin from flask_babelex import Babel from flask_basicauth import BasicAuth app = Flask(__name__) app.config["SECRET_KEY"] = "key" app.config['BABEL_DEFAULT_LOCALE'] = 'zh_CN' app.config['BASIC_AUTH_USERNAME'] = 'username' app.config['BASIC_AUTH_PASSWORD'] = 'passwd' app.config['BASIC_AUTH_FORCE'] = True babel = Babel(app) basic_auth = BasicAuth(app) admin = Admin(app) admin.add_view(py文件名(session对象, category='导航栏名称', endpoint='下拉页注释)) @app.route('/') def index(): return redirect('/admin', code=302) if __name__ == '__main__': app.run()
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
from flask_admin import expose from flask_admin.contrib.sqla import ModelView class WenshuView(ModelView): can_create = False can_edit = True can_delete = True simple_list_pager = True # 转化中文 column_labels = {'': ''} # 字段值转化 column_choices = {'': ‘’, } # 搜索条件 column_searchable_list = [''] # 筛选条件 column_filters = [''] # 列表页字段显示值 column_list = ('字段名', ''') def __init__(self, session, **kwargs): super(类名, self).__init__(表名, session, **kwargs)