Flask:request.view参数始终返回空的dicitonary
我正在尝试使用Flask附带的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.
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
只在将一些参数传递给视图时起作用。