Accedo a una pagina con il percorso /mypage?a=1&b=1&c=1
. Voglio creare un collegamento a un url simile, con alcuni parametri modificati: /mypage?a=1&b=2&c=1
, b cambiato da 1 a 2. So come ottenere gli argomenti correnti con request.args
, ma la struttura è immutabile, quindi non so come modificali. Come posso creare un nuovo collegamento nel modello Jinja con la query modificata?Modifica i parametri di query nella richiesta GET corrente per il nuovo url
6
A
risposta
10
Scrive una funzione che modifica la stringa di query dell'url corrente e genera un nuovo url. Aggiungi la funzione ai modelli globali utilizzando il decoratore della tua app Flask template_global
in modo che possa essere utilizzato nei modelli Jinja.
from flask import request
from werkzeug.urls import url_encode
@app.template_global()
def modify_query(**new_values):
args = request.args.copy()
for key, value in new_values.items():
args[key] = value
return '{}?{}'.format(request.path, url_encode(args))
<a href="{{ modify_query(b=2) }}">Link with updated "b"</a>