Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

Already on GitHub? Sign in to your account

urlencode filter missing ? #17

harobed opened this Issue Mar 8, 2011 · 6 comments


None yet
6 participants

harobed commented Mar 8, 2011


in List of Builtin Filters (http://jinja.pocoo.org/docs/templates/#list-of-builtin-filters) I don't found "urlencode" filter. It's a missing ?

I don't understand, in jinja1 this filter exists : http://wsgiarea.pocoo.org/jinja/docs/filters.html

Do you have some comment about that ?



razamatan commented May 16, 2011

why not make your own? while making it, take care to understand how urllib.urlencode, urllib.quote and urllib.quote_plus are related.

for me, i ended up making a function that can be used as both a filter and callable function (done for a flask app):

def urlencode(uri, **query):
   parts = list(urlparse.urlparse(uri))
   q = urlparse.parse_qs(parts[4])
   parts[4] = urllib.urlencode(q)
   return urlparse.urlunparse(parts)
app.jinja_env.globals['urlencode'] = urlencode

used in a template as a function:

{% set vendor_url = urlencode('http://www.google.com/search', q=adset.keyword.text) %}

used in a template as a filter:

{% set vendor_url = 'http://www.google.com/search?q=%s' % querytext %}
{{ vendor_url|urlencode }}

harobed commented May 16, 2011

why not make your own ?

Because jinja2 have already many buildin filters (http://jinja.pocoo.org/docs/templates/#builtin-filters) and urlencode is a classic feature whose can be appended in builin filters.



marians commented Apr 27, 2012

Would be nice if this could be committed to the main release. It's something one would expect in a template system as complete as jinja2.

marians commented Apr 27, 2012

@radekstepan @gfuchedzhy I have the impression that it's not as simple as passing the string/Markup through quote or quote plus. In my case, this caused unicode problems in quote_plus. It seems as if unicode has to be encoded to utf-8 to work well with quote_plus(). Here is my solution:

def urlencode_filter(s):
    if type(s) == 'Markup':
        s = s.unescape()
    s = s.encode('utf8')
    s = urllib.quote_plus(s)
    return Markup(s)

@mitsuhiko mitsuhiko closed this May 20, 2013

@npigeon npigeon pushed a commit to npigeon/mediagoblin that referenced this issue Nov 19, 2013

@spaetz spaetz Provide jinja2 urlencode filter
Astonishingly, the great jinja2 does not provide a builtin urlquote filter,
although it is obviously needed. (jina1 had one) This is:

Provide an urlencode filter, based on werkzeug's url_quote_plus function.
This is dead easy to implement and gives us all the freedom we want.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>

jace commented Feb 13, 2015

For anyone who stumbles on this looking for a urlencode filter, it was added back in 2012 in 06a8b1c and 5145401. Discussion in #85.

It's called urlencode and not urlquote, urlquoteplus, urlquote_plus or urlescape (adding these for anyone else landing via search).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment