2015-06-29 12 views
6

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

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> 
Problemi correlati