Python 在模板链接中重复URL参数
我将Python/Flask用于一个简单的数据库应用程序。我有一个查询,显示通过各种参数过滤的事务。我将这些参数作为URL参数传递给我的“view_transactions”Flask view函数Python 在模板链接中重复URL参数,python,flask,Python,Flask,我将Python/Flask用于一个简单的数据库应用程序。我有一个查询,显示通过各种参数过滤的事务。我将这些参数作为URL参数传递给我的“view_transactions”Flask view函数 对查询进行分页以一次显示几个事务。我需要重复页码“>>”和“>”/“上的所有原始查询URL参数。在这种情况下,您始终可以生成URL生成帮助程序。请访问- 下面是可能的辅助函数,您可以通过它传递额外的参数- def url_for_other_page(page): args = reques
对查询进行分页以一次显示几个事务。我需要重复页码“>>”和“>”/“上的所有原始查询URL参数。在这种情况下,您始终可以生成URL生成
帮助程序。请访问-
下面是可能的辅助函数,您可以通过它传递额外的参数-
def url_for_other_page(page):
args = request.view_args.copy()
args['page'] = page
return url_for(request.endpoint, **args)
app.jinja_env.globals['url_for_other_page'] = url_for_other_page
在上面的代码中,您始终可以使用额外的参数进一步扩展args
,例如
- args['extra-params1']=extra-params-1
- args['extra-params2']=extra-params-2
- args['extra-params3']=extra-params-3
- 这些参数还可以在jinja2模板中使用-{url\u用于其他页面(extra-param2)}>{{extra-param2}}用于任何url
Jinja2模板
{% macro render_pagination(pagination) %}
<div class=pagination>
{%- for page in pagination.iter_pages() %}
{% if page %}
{% if page != pagination.page %}
<a href="{{ url_for_other_page(page) }}">{{ page }}</a>
{% else %}
<strong>{{ page }}</strong>
{% endif %}
{% else %}
<span class=ellipsis>…</span>
{% endif %}
{%- endfor %}
{% if pagination.has_next %}
<a href="{{ url_for_other_page(pagination.page + 1)
}}">Next »</a>
{% endif %}
</div>
{% endmacro %}
{%macro render_分页(分页)%}
{%-用于分页中的页面。iter_pages()%}
{%if page%}
{%if page!=pagination.page%}
{%else%}
{{page}
{%endif%}
{%else%}
…
{%endif%}
{%-endfor%}
{%if pagination.has_next%}
{%endif%}
{%endmacro%}
请确保参考URL以获得准确解释。在这种情况下,您始终可以生成URL生成帮助程序
。请浏览-
下面是可能的辅助函数,您可以通过它传递额外的参数-
def url_for_other_page(page):
args = request.view_args.copy()
args['page'] = page
return url_for(request.endpoint, **args)
app.jinja_env.globals['url_for_other_page'] = url_for_other_page
在上面的代码中,您始终可以使用额外的参数进一步扩展args
,例如
- args['extra-params1']=extra-params-1
- args['extra-params2']=extra-params-2
- args['extra-params3']=extra-params-3
- 这些参数还可以在jinja2模板中使用-{url\u用于其他页面(extra-param2)}>{{extra-param2}}用于任何url
Jinja2模板
{% macro render_pagination(pagination) %}
<div class=pagination>
{%- for page in pagination.iter_pages() %}
{% if page %}
{% if page != pagination.page %}
<a href="{{ url_for_other_page(page) }}">{{ page }}</a>
{% else %}
<strong>{{ page }}</strong>
{% endif %}
{% else %}
<span class=ellipsis>…</span>
{% endif %}
{%- endfor %}
{% if pagination.has_next %}
<a href="{{ url_for_other_page(pagination.page + 1)
}}">Next »</a>
{% endif %}
</div>
{% endmacro %}
{%macro render_分页(分页)%}
{%-用于分页中的页面。iter_pages()%}
{%if page%}
{%if page!=pagination.page%}
{%else%}
{{page}
{%endif%}
{%else%}
…
{%endif%}
{%-endfor%}
{%if pagination.has_next%}
{%endif%}
{%endmacro%}
请确保参考URL以获得准确的解释。只需使用请求。查询字符串,因为请求可作为模板的一部分使用:
只需使用请求。查询字符串
,因为请求
是模板的一部分:
Oliver-请提供您到目前为止尝试过的确切代码。现在编辑以包含查看代码。Oliver-请提供您到目前为止尝试过的确切代码。现在编辑以包含查看代码。谢谢…我已经尝试过了,但它没有起作用…request.view\u args只包含{的页面:1},这是视图函数的参数。它不包含URL后面的参数?(即帐户和类别)。有什么想法吗?谢谢…我尝试过这个,但没有效果…request.view_args只包含{page':1},这是视图函数的参数。它不包含URL后面的参数?(即帐户和类别)。有什么想法吗?空的{{request.query\u string}
在我的系统上计算为b'
。?a
打印为b'a'
。正确且有效的调用是:{request.query\u string.decode()}
@Robert-它对您来说就是这样,因为您使用的是Python 3根据我的知识“Python 2.x是传统的,Python 3.x是该语言的现在和未来"。因此,请回答Python 3,除非该问题是明确的Python 2问题。或者至少提及该解决方案仅适用于Python 2。如果您查看该问题的日期,它是去年被问到的,并且注意它被OP检查为已接受,这意味着它对他们有效。您应该问一个新问题,请返回对于这个问题,并询问它为什么不起作用-正确的答案应该是“对于Python 3,您必须对返回的ByTestString进行解码,返回时带有.decode()
”。一个空的{request.query\u string}
在我的系统上计算为b'
。?a
被打印为b'a'
。正确且有效的调用是:{{request.query\u string.decode()}
@Robert-它对您来说是这样的,因为根据我的知识,“Python 2.x是传统的,Python 3.x是语言的现在和未来”。因此,请回答Python 3,除非该问题是明确的Python 2问题。或者至少提及该解决方案仅适用于Python 2。如果您查看该问题的日期,它是去年被问到的,并且注意它被OP检查为已接受,这意味着它对他们有效。您应该问一个新问题,请返回对于这个问题,并询问它为什么不起作用——正确的答案应该是“对于Python 3,您必须对返回的bytestring进行解码,.decode()
”。
<a href="{{ url_for('view_transactions',
page=transactions.next_num,
account=account_parm,
category=category_parm,
...) }}?{{request.query_string}}">{{ _('>>') }}</a>