Python 在模板链接中重复URL参数

Python 在模板链接中重复URL参数,python,flask,Python,Flask,我将Python/Flask用于一个简单的数据库应用程序。我有一个查询,显示通过各种参数过滤的事务。我将这些参数作为URL参数传递给我的“view_transactions”Flask view函数 对查询进行分页以一次显示几个事务。我需要重复页码“>>”和“>”/“上的所有原始查询URL参数。在这种情况下,您始终可以生成URL生成帮助程序。请访问- 下面是可能的辅助函数,您可以通过它传递额外的参数- def url_for_other_page(page): args = reques

我将Python/Flask用于一个简单的数据库应用程序。我有一个查询,显示通过各种参数过滤的事务。我将这些参数作为URL参数传递给我的“view_transactions”Flask view函数


对查询进行分页以一次显示几个事务。我需要重复页码“>>”和“>”/“上的所有原始查询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 &raquo;</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 &raquo;</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>