【Flask】关于Flask-Admin的一些坑及避开技巧

来源:互联网 发布:淘宝负责人电话号码 编辑:程序博客网 时间:2024/05/16 04:52

概述

在使用Flask-Admin开发后台应用的时候,会遇到Flask-admin的一些坑,这篇是记录这些坑并且如何灵巧的避开。

坑一:无法下载CSS(大文件)

我在把Flask部署到内网上的Linux服务器后,在苹果电脑上打开Falsk-Admin的后台应用,会发现有时候没有CSS样式表,而且有时候JS也没有下载下来,用浏览器调试时发现有关文件报了「」错误,我估计是因为文件太大(大约80KB)导致文件下载不下来。解决办法是把那些文件改用CDN,下面是一个避开此坑的方法:

创建my_base_view.html文件,改写Flask-Admin默认的base.html模板。

{# 继承base.html #}{% extends 'admin/base.html' %}{# 改写head_css #}{% block head_css %}    {# <link href="{{ admin_static.url(filename='bootstrap/bootstrap2/css/bootstrap.css', v='2.3.2', _external=True) }}" rel="stylesheet"> #}    <link href="http://cdn.bootcss.com/bootstrap/2.3.2/css/bootstrap.css" rel="stylesheet">    {# <link href="{{ admin_static.url(filename='bootstrap/bootstrap2/css/bootstrap-responsive.css', v='2.3.2', _external=True) }}" rel="stylesheet"> #}    <link href="http://cdn.bootcss.com/bootstrap/2.3.2/css/bootstrap-responsive.css" rel="stylesheet">    <link href="{{ admin_static.url(filename='admin/css/bootstrap2/admin.css', v='1.1.1', _external=True) }}" rel="stylesheet">    <style>    body {        padding-top: 4px;    }    </style>{% endblock %}{# 改写tail_js #}{% block tail_js %}    {# <script src="{{ admin_static.url(filename='vendor/jquery.min.js', v='2.1.4', _external=True) }}" type="text/javascript"></script> #}    <script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>    {# <script src="{{ admin_static.url(filename='bootstrap/bootstrap2/js/bootstrap.min.js', v='2.3.2', _external=True) }}" type="text/javascript"></script> #}    <script src="http://cdn.bootcss.com/bootstrap/2.3.2/js/bootstrap.min.js"></script>    <script src="{{ admin_static.url(filename='vendor/moment.min.js', v='2.9.0', _external=True) }}" type="text/javascript"></script>    <script src="{{ admin_static.url(filename='vendor/select2/select2.min.js', v='3.5.2', _external=True) }}" type="text/javascript"></script>{% endblock %}

之后设置admin的base_template参数为该模板即可。

from flask_admin import Adminadmin = Admin(name=u'应用名称',                  base_template='my_base_view.html')

在Flask-Admin的视图页面中要显示大图片,但几乎下载不下来,也是这个原因。目前的办法是只能压缩图片,尽量小于80KB。

坑二:初始化视图不能放在create_app

Flask-Admin有add_view视图函数,给admin添加视图的时候,不能放在create_app里。虽然运行没有报错,但是在单元测试的时候会出现蓝本重复注册,正确的方法是在create_app外面调用add_view

# 代码示例admin = Admin(name=u'应用名称')# 正确做法admin.add_view(ModelView(name='板块', category='标签'))def create_app(config_name):    app = Flask(__name__)    app.config.from_object(config[config_name])    config[config_name].init_app(app)    admin.init_app(app)    # 不好的做法    #admin.add_view(ModelView(name='板块', category='标签'))    return app
0 0
原创粉丝点击