Flask:request.view参数始终返回空的dicitonary

Flask:request.view参数始终返回空的dicitonary,flask,jinja2,Flask,Jinja2,我正在尝试使用Flask附带的paginate()函数对我的产品目录进行分页 在目录中,我使用搜索过滤器对产品进行排序,这取决于过滤器本身,在url中,我有5到10个以上的参数,这些参数总是在变化,我希望分页路径包含它们 在模板内部,我正在执行以下操作: {% if pagination.has_next or pagination.has_prev %} {{ macros.pagination_widget( pagination, request.

我正在尝试使用Flask附带的
paginate()
函数对我的产品目录进行分页

在目录中,我使用搜索过滤器对产品进行排序,这取决于过滤器本身,在url中,我有5到10个以上的参数,这些参数总是在变化,我希望分页路径包含它们

在模板内部,我正在执行以下操作:

{% if pagination.has_next or pagination.has_prev %}
{{ 
    macros.pagination_widget(
        pagination,
        request.endpoint,
        args=request.view_args
    )
}}
{% endif %}
问题是,
request.view\u args
总是返回一个空字典,事实上参数位于url


如果我试图通过使用一些逻辑来硬编码所有参数,比如我不想使用的
{%If%}
{%else%}
,分页效果很好。

我通过使用
请求。查询字符串
和创建帮助程序解决了这个问题,现在一切都很好

以下是解决方案:

\u macros\u pagination.html

{% macro pagination_widget(pagination, endpoint, extra='') %}
    <ul class="uk-pagination uk-flex-center" uk-margin="">
        <li{% if not pagination.has_prev %} class="disabled"{% endif %}>
            <a href="{% if pagination.has_prev %}{{ url_for(endpoint, page=pagination.prev_num, **kwargs) }}&{{extra}}{% else %}#{% endif %}">
                <span uk-pagination-previous=""></span>
            </a>
        </li>
        {% for p in pagination.iter_pages() %}
            {% if p %}
                {% if p == pagination.page %}
                <li class="uk-active">
                    <a href="{{ url_for(endpoint, page = p, **kwargs) }}&{{extra}}">{{ p }}</a>
                </li>
                {% else %}
                <li>
                    <a href="{{ url_for(endpoint, page = p, **kwargs) }}&{{extra}}">{{ p }}</a>
                </li>
                {% endif %}
            {% else %}
            <li class="uk-disabled"><span>...</span></li>
            {% endif %}
        {% endfor %}
        <li{% if not pagination.has_next %} class="disabled"{% endif %}>
            <a href="{% if pagination.has_next %}{{ url_for(endpoint, page=pagination.next_num, **kwargs) }}&{{extra}}{% else %}#{% endif %}">
                <span uk-pagination-next=""></span>
            </a>
        </li>
    </ul>
{% endmacro %}
{% import "_macros_pagination.html" as macros %}

{% if pagination.has_next or pagination.has_prev %}
    {{ 
        macros.pagination_widget(
            pagination,
            request.endpoint,
            extra=request.query_string
        )
    }}
{% endif %}

你的观点定义了那些论点吗?@Mekicha不,没有,我有吗?我的意思是,例如,我可以从
request.args
获取参数,而无需在视图中定义它们
request.args
访问解析的URL参数(URL中问号后面的部分)
view\u args
是一个与请求匹配的视图参数的dict,例如,如果您有一个view函数,它接受一个user\u id变量,如下所示:
def get\u user(user\u id)
。哦,我明白了,所以
request.view\u args
只在将一些参数传递给视图时起作用。