μλ ,
λ΄μ₯ νν° λͺ©λ‘(http://jinja.pocoo.org/docs/templates/#list-of-builtin-filters)μμ "urlencode" νν°λ₯Ό μ°Ύμ μ μμ΅λλ€. λλ½μΈκ°μ?
λλ jinja1μμ΄ νν°κ° μ‘΄μ¬νλ€λ κ²μ μ΄ν΄ν μ μμ΅λλ€. http://wsgiarea.pocoo.org/jinja/docs/filters.html
κ·Έκ²μ λν΄ μκ²¬μ΄ μμΌμλκΉ?
λ¬Έμ μΈμ¬,
μ€ν
ν
μ μμ μ κ²μ λ§λ€μ§ μμ΅λκΉ? λ§λ€ λ urllib.urlencode, urllib.quote λ° urllib.quote_plusκ° μ΄λ»κ² κ΄λ ¨λμ΄ μλμ§ μ΄ν΄νλλ‘ μ£Όμνμμμ€.
λλ₯Ό μν΄, λλ νν°μ νΈμΆ κ°λ₯ν ν¨μ λͺ¨λλ‘ μ¬μ©ν μ μλ ν¨μλ₯Ό λ§λ€μμ΅λλ€(νλΌμ€ν¬ μ±μ λν΄ μνλ¨):
@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
ν νλ¦Ώμμ ν¨μλ‘ μ¬μ©:
{% set vendor_url = urlencode('http://www.google.com/search', q=adset.keyword.text) %}
ν νλ¦Ώμμ νν°λ‘ μ¬μ©:
{% set vendor_url = 'http://www.google.com/search?q=%s' % querytext %}
{{ vendor_url|urlencode }}
μ λΉμ μμ μ λ§λ€μ§ μμ΅λκΉ?
jinja2μλ μ΄λ―Έ λ§μ buildin νν°(http://jinja.pocoo.org/docs/templates/#builtin-filters)κ° μκ³ urlencodeλ builin νν°μ μΆκ°ν μ μλ κ³ μ μ μΈ κΈ°λ₯μ΄κΈ° λλ¬Έμ λλ€.
λ¬Έμ μΈμ¬,
μ€ν
ν
urllib.quote_plus(uri)
μ΄κ²μ΄ μ£Όμ 릴리μ€μ 컀λ°λ μ μλ€λ©΄ μ’μ κ²μ λλ€. jinja2μ κ°μ΄ μμ ν ν νλ¦Ώ μμ€ν μμ κΈ°λν μ μλ κ²μ λλ€.
@radekstepan @gfuchedzhy μΈμ©λΆνΈλ μΈμ©λΆνΈ λνκΈ°λ₯Ό ν΅ν΄ λ¬Έμμ΄/λ§ν¬μ μ μ λ¬νλ κ²λ§νΌ κ°λ¨νμ§ μλ€λ μΈμμ λ°μμ΅λλ€. μ κ²½μ°μλ quote_plusμμ μ λμ½λ λ¬Έμ κ° λ°μνμ΅λλ€. quote_plus()μ μ μλνλ €λ©΄ μ λμ½λκ° utf-8λ‘ μΈμ½λ©λμ΄μΌ νλ κ²μ²λΌ 보μ λλ€. λ΄ μ루μ μ λ€μκ³Ό κ°μ΅λλ€.
@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)
urlencode
νν°λ₯Ό μ°Ύλ μ΄ νλͺ©μ λ°κ²¬ν μ¬λμ μν΄ 2012λ
06a8b1c02b2091b31ef4f39ddde3184f25f58260 λ° 5145401fe5f9995a32757f3483μ μΆκ°λμμ΅λλ€. #85μ ν λ‘ .
urlencode
λΌκ³ νλ©° $ urlquote
, urlquoteplus
, urlquote_plus
λλ urlescape
κ° μλλλ€(κ²μμ ν΅ν΄ λ°©λ¬Ένλ λ€λ₯Έ μ¬λμ μν΄ μΆκ°).
κ°μ₯ μ μ©ν λκΈ
urlencode
νν°λ₯Ό μ°Ύλ μ΄ νλͺ©μ λ°κ²¬ν μ¬λμ μν΄ 2012λ 06a8b1c02b2091b31ef4f39ddde3184f25f58260 λ° 5145401fe5f9995a32757f3483μ μΆκ°λμμ΅λλ€. #85μ ν λ‘ .urlencode
λΌκ³ νλ©° $urlquote
,urlquoteplus
,urlquote_plus
λλurlescape
κ° μλλλ€(κ²μμ ν΅ν΄ λ°©λ¬Ένλ λ€λ₯Έ μ¬λμ μν΄ μΆκ°).