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

概述

在使用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 Admin
admin = 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
发布了176 篇原创文章 · 获赞 374 · 访问量 128万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 程序猿惹谁了 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览