【问题标题】:How to pass Data to Flask_Admin's View's HTML?如何将数据传递给 Flask Admin View HTML?
【发布时间】:2020-04-27 20:41:15
【问题描述】:

我目前正在尝试使用我的数据库中的数据填充 Flask_Admin 主页上的小部件。 但是,我无法将数据传递到 HTML。这是我的观点,我想在哪里渲染accountBalance

class MyView(BaseView):
    accountBalance = 0

    @expose('/')
    def index(self, accountBalance, **kwargs):
        self.accountBalance = accountBalance
        return self.render('admin/index.html', accountBalance=accountBalance)

# And app code:
accountBalance = 10000

if __name__ == '__main__':
    admin = Admin(app, name='MyAdmin', template_mode='bootstrap3')
    admin.add_view(views.MyView(accountBalance))
    app.run(host='0.0.0.0')

这是 admin/index.html 中的 HTML/Jinja 逻辑,它尝试渲染我在上面传入的 accountBalance

{% extends 'admin/master.html' %}

{% block head_css %}
{{ super() }}
    <link href="{{ url_for('static', filename='sb-admin-2.css') }}" rel="stylesheet">
{% endblock head_css %}

{% block body %}
{{ super() }}
                <div class="col-lg-3 col-md-6">
                    <div class="panel panel-primary">
                        <div class="panel-heading">
                            <div class="row">
                                <div class="col-xs-3">
                                    <i class="fa fa-comments fa-5x"></i>
                                </div>
                                <div class="col-xs-9 text-right">
                                    <div class="huge">This is your balance:</div>
                                    <div> {% accountBalance %}</div>
                                </div>
                            </div>
                        </div>

                    </div>
                </div>

{% endblock body %}

我一直在按照示例尝试使其正常工作,其中 HTML 中的 '{% accountBalance %}' 应该是我尝试传入的 accountBalance 的值,但没有占上风。

我做错了什么?

【问题讨论】:

    标签: python html flask jinja2 flask-admin


    【解决方案1】:

    使用{{ accountBalance }}{% .. %} 用于 for 循环和 if 条件等语句。

    来自documentation

    {% ... %} 用于声明

    {{ ... }} 用于将表达式打印到模板输出

    【讨论】:

    • 谢谢!这修复了 Jinja 部分,但我仍然无法设置“accountBalance”的值。我在index() 中正确传递了吗?
    • @TDiddy 没有使用 Flask-Admin 的经验,我不能肯定地说。但是,我相信你不能这样通过。 views.MyView(accountBalance) 像构造函数参数一样传递它。因此,您应该声明一个构造函数def __init__(self, accountBalance) 并在其中设置self.accountBalance 的值。请测试它并让我知道结果:)
    • OP:你让它工作了吗?
    猜你喜欢
    • 2020-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-19
    相关资源
    最近更新 更多