Hai,
di Daftar Filter Bawaan ( http://jinja.pocoo.org/docs/templates/#list-of-builtin-filters ) saya tidak menemukan filter "urlencode". Itu hilang?
Saya tidak mengerti, di jinja1 filter ini ada: http://wsgiarea.pocoo.org/jinja/docs/filters.html
Apakah Anda memiliki beberapa komentar tentang itu?
Salam,
Stephane
kenapa tidak buat sendiri? saat membuatnya, berhati-hatilah untuk memahami bagaimana urllib.urlencode, urllib.quote dan urllib.quote_plus terkait.
bagi saya, saya akhirnya membuat fungsi yang dapat digunakan sebagai filter dan fungsi yang dapat dipanggil (dilakukan untuk aplikasi labu):
@app.template_filter('urlencode')
def urlencode(uri, **query):
parts = list(urlparse.urlparse(uri))
q = urlparse.parse_qs(parts[4])
q.update(query)
parts[4] = urllib.urlencode(q)
return urlparse.urlunparse(parts)
app.jinja_env.globals['urlencode'] = urlencode
digunakan dalam template sebagai fungsi:
{% set vendor_url = urlencode('http://www.google.com/search', q=adset.keyword.text) %}
digunakan dalam template sebagai filter:
{% set vendor_url = 'http://www.google.com/search?q=%s' % querytext %}
{{ vendor_url|urlencode }}
kenapa tidak buat sendiri?
Karena jinja2 sudah memiliki banyak filter bawaan (http://jinja.pocoo.org/docs/templates/#builtin-filters) dan urlencode adalah fitur klasik yang dapat ditambahkan di filter builin.
Salam,
Stefanus
urllib.quote_plus(uri)
Akan lebih baik jika ini bisa dilakukan untuk rilis utama. Ini adalah sesuatu yang diharapkan dalam sistem template selengkap jinja2.
@radekstepan @gfuchedzhy Saya mendapat kesan bahwa itu tidak sesederhana melewati string/Markup melalui kutipan atau kutipan plus. Dalam kasus saya, ini menyebabkan masalah unicode di quote_plus. Sepertinya unicode harus dikodekan ke utf-8 agar berfungsi dengan baik dengan quote_plus(). Inilah solusi saya:
@app.template_filter('urlencode')
def urlencode_filter(s):
if type(s) == 'Markup':
s = s.unescape()
s = s.encode('utf8')
s = urllib.quote_plus(s)
return Markup(s)
Bagi siapa saja yang menemukan filter urlencode
ini, filter ini telah ditambahkan kembali pada tahun 2012 di 06a8b1c02b2091b31ef4f39ddde3184f25f58260 dan 5145401fe5f9995a32757f34359623b87048ab8b. Diskusi di #85.
Ini disebut urlencode
dan bukan urlquote
, urlquoteplus
, urlquote_plus
atau urlescape
(menambahkan ini untuk orang lain yang mendarat melalui pencarian).
Komentar yang paling membantu
Bagi siapa saja yang menemukan filter
urlencode
ini, filter ini telah ditambahkan kembali pada tahun 2012 di 06a8b1c02b2091b31ef4f39ddde3184f25f58260 dan 5145401fe5f9995a32757f34359623b87048ab8b. Diskusi di #85.Ini disebut
urlencode
dan bukanurlquote
,urlquoteplus
,urlquote_plus
atauurlescape
(menambahkan ini untuk orang lain yang mendarat melalui pencarian).