Giter VIP home page Giter VIP logo

Comments (6)

jace avatar jace commented on May 23, 2024 25

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).

from jinja.

razamatan avatar razamatan commented on May 23, 2024

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):

@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

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 }}

from jinja.

harobed avatar harobed commented on May 23, 2024

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.

Regards,
Stephane

from jinja.

radekstepan avatar radekstepan commented on May 23, 2024

urllib.quote_plus(uri)

from jinja.

marians avatar marians commented on May 23, 2024

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.

from jinja.

marians avatar marians commented on May 23, 2024

@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:

@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)

from jinja.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.