Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 扩展flask管理模板时添加参数以呈现调用_Python_Flask Admin - Fatal编程技术网

Python 扩展flask管理模板时添加参数以呈现调用

Python 扩展flask管理模板时添加参数以呈现调用,python,flask-admin,Python,Flask Admin,我正在尝试向Flask管理员列表视图添加内容。 我想在列表视图的顶部添加我自己的内容。 到目前为止,我所做的是扩展默认列表视图并添加我自己的内容,如下所示: {% extends 'admin/model/list.html' %} {% block body %} <h3>Submit report</h3> {% if report_form.errors %} <ul class="errors"> {% for

我正在尝试向Flask管理员列表视图添加内容。 我想在列表视图的顶部添加我自己的内容。 到目前为止,我所做的是扩展默认列表视图并添加我自己的内容,如下所示:

{% extends 'admin/model/list.html' %}

{% block body %}
    <h3>Submit report</h3>
    {% if report_form.errors %}
    <ul class="errors">
        {% for field_name, field_errors in report_form.errors|dictsort if field_errors %}
            {% for error in field_errors %}
                <li>{{ form[field_name].label }}: {{ error }}</li>
            {% endfor %}
        {% endfor %}
    </ul>
    {% endif %}
    <form action="{{ url_for('report.index') }}" method="post" enctype="multipart/form-data">
    {{ report_form.file }}
    {{ report_form.csrf_token }}
    <button type="submit">Send</button>
    </form>
    {{ super() }}
{% endblock %}
现在我的问题是列表视图需要设置一定数量的参数来处理列表的显示

这些参数在内部定义

因此,当尝试显示页面时,我当然会遇到一个错误:

jinja2.exceptions.UndefinedError: 'num_pages' is undefined
我的问题是:如何将参数包括到父视图的渲染调用中

谢谢

尝试覆盖视图的render方法,在该方法中可以将变量注入kwargs参数

未经测试的示例

尝试重写视图的render方法,以便将变量注入kwargs参数

未经测试的示例


这正是我想要的!!我对你感激不尽。我已经接受了你的回答,但不幸的是我没有足够的声誉去投票。再次感谢!这正是我想要的!!我对你感激不尽。我已经接受了你的回答,但不幸的是我没有足够的声誉去投票。再次感谢!
return self.render(
            self.list_template,
            data=data,
            form=form,
            delete_form=delete_form,

            # List
            list_columns=self._list_columns,
            sortable_columns=self._sortable_columns,
            editable_columns=self.column_editable_list,

            # Pagination
            count=count,
            pager_url=pager_url,
            num_pages=num_pages,
            page=view_args.page,

            # Sorting
            sort_column=view_args.sort,
            sort_desc=view_args.sort_desc,
            sort_url=sort_url,

            # Search
            search_supported=self._search_supported,
            clear_search_url=clear_search_url,
            search=view_args.search,

            # Filters
            filters=self._filters,
            filter_groups=self._filter_groups,
            active_filters=view_args.filters,

            # Actions
            actions=actions,
            actions_confirmation=actions_confirmation,

            # Misc
            enumerate=enumerate,
            get_pk_value=self.get_pk_value,
            get_value=self.get_list_value,
            return_url=self._get_list_url(view_args),
        )
jinja2.exceptions.UndefinedError: 'num_pages' is undefined
class ReportAdmin(ModelView):

    list_template = 'report/index.html'

    #  Override to allow POSTS
    @expose('/', methods=('GET', 'POST'))
    def index_view(self):
        return super(ReportAdmin, self).index_view(self)

    def render(self, template, **kwargs):
        # we are only interested in our custom list page
        if template == 'report/index.html':

            report_form = ReportFileForm()
            if report_form.validate_on_submit():
                file = report_form.file.data

                #Check for report duplicate
                if Report.query.filter(Report.filename == file.filename).all():
                    flash('Could not add report because a report with filename {} already exists.'.format(file.filename), 'error')
                else:
                    try:
                        report = parser_factory(file)
                        flash('Report was submitted succesfully')
                    except ValueError as e:
                        report_form.file.errors.append(e)

            kwargs['report_form'] = report_form

        return super(ReportAdmin, self).render(template, **kwargs)