flask-admin:修改按钮文本

flask-admin: revise the button text

我在Whosebug上没有找到类似的问题,我想把保存按钮改成提交或者编辑表单上确认。我知道这可能不会轻易改变。感谢您提前提出任何建议。

flask-admin的代码中搜索后,发现按钮是用宏render_formrender_form_buttonsextra渲染的。这些按钮的值是 {{ _gettext("blabla") }} 的硬编码。

由于这些按钮不是数据模型的字段,我们不能使用rendering rules来自定义值。我认为有两种解决方法可以完成这项工作:

  • 更改在 flask-admin(render_form_buttons, extra)
  • 的源代码中呈现这些按钮的宏
  • flask-admin使用flask-babelex做本地化({{ _gettext("blabla") }}),你可以'translate'Savesubmitconfirm 与 flask-babelex

更新:

您可以在自己的模板目录中自定义edit.html

{% extends 'admin/model/edit.html' %}
{% from 'admin/lib.html' import extra with context %}
{% from 'admin/lib.html' import form_tag with context %}
{% from 'admin/lib.html' import render_form_fields with context %}

{% macro my_render_form_buttons(cancel_url, extra=None, is_modal=False) %}
    <hr>
    <div class="form-group">
        <div class="col-md-offset-2 col-md-10 submit-row">
            <input type="submit" class="btn btn-primary" value="{{ _gettext('Submit') }}" />
            {% if extra %}
            {{ extra }}
            {% endif %}
            {% if cancel_url %}
                <a href="{{ cancel_url }}" class="btn btn-danger" role="button" {% if is_modal %}data-dismiss="modal"{% endif %}>{{ _gettext('Cancel') }}</a>
            {% endif %}
         </div>
    </div>
{% endmacro %}

{% macro my_render_from(form, cancel_url, extra=None, form_opts=None, action=None, is_modal=False) -%}
    {% call form_tag(action=action) %}
        {{ render_form_fields(form, form_opts=form_opts) }}
        {{ my_render_form_buttons(cancel_url, extra, is_modal) }}
    {% endcall %}
{% endmacro %}

{% block edit_form %}
    {{ my_render_form(form, return_url, extra(), form_opts) }}
{% endblock %}