gpt4 book ai didi

python - Flask 在模板链接中重复 URL 参数

转载 作者:行者123 更新时间:2023-11-30 23:09:35 24 4
gpt4 key购买 nike

我正在使用 Python/Flask 来构建一个简单的数据库应用程序。我有一个查询,显示按各种参数过滤的交易。我将这些参数作为 URL 参数传递给我的“view_transactions”Flask View 函数。

查询被分页以一次显示一些交易。我需要在分页“>>”和“<<”链接上重复所有原始查询 URL 参数,因为此时它们丢失了,这意味着在导航结果时过滤器被清除。

我可以通过将所有参数按名称显式传递到我用来构建“>>”/“<<”链接的 url_for 中来做到这一点,因此:

<a href="{{ url_for('view_transactions', page=transactions.next_num, account=account_parm, category=category_parm, ...) }}">{{ _('>>') }}</a>

我使用的views.py代码是:

@app.route('/view/transactions', methods=['GET','POST'])
@app.route('/view/transactions/<int:page>', methods=['GET', 'POST'])
@login_required
def view_transactions(page=1):

tq = db.session.query(Transaction).order_by(desc(Transaction.id))

get_temp = request.args.get('category')
if get_temp != None:
tq = tq.filter_by(category=get_temp)
get_temp = request.args.get('account')
if get_temp != None:
tq = tq.filter_by(account=get_temp)
start_date = request.args.get('start_date')
end_date = request.args.get('end_date')
if start_date != None:
tq = tq.filter(Transaction.date>=(start_date))
if end_date != None:
tq = tq.filter(Transaction.date<=(end_date))

transactions = paginate(tq, page, POSTS_PER_PAGE)

return render_template('transactions.html',
title='Transactions',
transactions=transactions,
account_parm=request.args.get('account'),
category_parm=request.args.get('category'))

我用来访问该页面的 URL 是 http://localhost:5000/view/transactions/1?account=AT1&category=CT2

但是,当我引入额外的参数时,这很乏味且维护起来很痛苦。有没有一种方法可以自动将父页面上使用的所有相同 URL 参数传递到该页面上的链接上?

最佳答案

只需使用 request.query_string,因为 request 可作为 standard context 的一部分提供给模板。 :

<a href="{{ url_for('view_transactions',
page=transactions.next_num,
account=account_parm,
category=category_parm,
...) }}?{{request.query_string}}">{{ _('>>') }}</a>

关于python - Flask 在模板链接中重复 URL 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31099702/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com