2015-06-29 12 views
6

yoluna sahip bir sayfaya erişiyorum. Bazı parametreler değiştiğinde benzer bir url için bir bağlantı oluşturmak istiyorum: /mypage?a=1&b=2&c=1, b 1'den 2'ye değiştirildi. Geçerli argümanları request.args ile nasıl alacağımı biliyorum, ancak yapı değişmez, bu yüzden nasıl yapılacağını bilmiyorum onları düzenleyin. Değiştirilen sorgu ile Jinja şablonunda nasıl yeni bir bağlantı kurabilirim?Yeni url için geçerli GET isteğindeki sorgu parametrelerini değiştirin

cevap

10

Geçerli URL'nin sorgu dizesini değiştiren ve yeni bir url çıkaran bir işlev yazın. Flask uygulamanızın template_global dekoratörünü kullanarak şablonu küresel globals'a ekleyin, böylece Jinja şablonlarında kullanılabilir.

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>