Awesome and thanx. I got that working and am able to generate URLs of
the form I wanted.

But I've now discovered that web2py seems to be doing some additional
URL processing that I can't isolate.

Assume a controller:

def baz():
    orb = request.args[0]
    return dict(orb=orb)

With a view that just renders orb:

{{extend 'layout.html'}}
<h1>Baz</h1>
<p>{{=orb}}</p>

When I type in a URL of the form:

http://localhost:8000/simple_app/default/baz/laa%20poo

the value of orb that gets passed to the view appears to be

laa_poo

In other words, the encoded space got converted to an underscore
somewhere.

Who is doing this and where are its rules documented? (I'm guessing
it's part of a security measure to prevent arbitrary stuff being
passed as args -- is this right?)


On Jul 14, 2:31 am, Anthony <[email protected]> wrote:
> If you've got keys and values in a dictionary that you want to convert to a
> query string, you would use urllib.urlencode (which is what the web2py URL
> function uses for vars). To quote just a plain string (like an arg), you can
> use urllib.quote() or urllib.quote_plus() (the latter converts each space to
> a '+' instead of a '%20'). If you want to convert back, you can use
> urllib.unquote() or urllib.unquote_plus() (though I think that will be
> handled automatically anyway).
>
> Anthony
>
> On Wednesday, July 13, 2011 5:55:49 PM UTC-4, (m) wrote:
> > My Web-programming and Python noobs continues to show. Thanks for
> > bearing with me.
>
> > I have a view with a fragment along the lines of the following to
> > generates a list of links. foos has been generated in the controller.
>
> > {{for foo in foos:}}
> > <li><a href="{{=URL('show', args=foo.name)}}">{{=foo.name}}</a></li>
> > {{pass}}
>
> > This works fine until foo.name has spaces and/or other URL-unfriendly
> > chars in it. So the questions are:
>
> > * Does web2py have its own mechanism for encoding/decoding URLs that
> > is useful here?
> > * If not, what is the preferred Python lib for doing URL encoding/
> > decoding?
>
> > (P.S. I am aware that there are other ways of addressing this issue:
> > e.g., use vars (which web2py seems to automatically encode) instead of
> > args, or use args=foo.id instead or args=foo.name. In any event, it'd
> > be good to know the web2py way to encode/decode URLs.)
>
>

Reply via email to