[Twisted-web] url.URL flattener avoid url-encoding
Little
mordaha at gmail.com
Wed Apr 27 06:24:00 MDT 2005
Page URI looks like this:
http://localhost/index?text=abc%20def%20ert&base=base1
Template xml looks like this:
<a>
<n:attr name="href"><n:slot name="href" /></n:attr>
<n:slot name="base" />(<n:slot name="count" />)
</a>
Render code looks like this:
def render_href(self, ctx, data):
u = url.URL.fromContext(ctx)
u = u.replace("base", data[0])
ctx.fillSlots("href", u)
ctx.fillSlots("base", data[0])
ctx.fillSlots("count", data[1])
return ctx.tag
Problem:
In this example, href of A-tag is not url-encoded. So, i have a link,
that looks like this:
<a href="http://localhost/index?text=abc def ert&base=base2">
(there are spaces in href)
To make valid link, i need to do urllib.quote by myself:
from urllib import quote
ctx.fillSlots("href", quote(str(u),':&/=?'))
Why URL flattener avoid urllib.quote?
P.S. And may be using urllib.unquote_plus() is more correct in url.URL
than urllib.unquote()? (IE encoded form data spaces into '+' chars,
not into '%20')
P.P.S. nevow 0.4.1
More information about the Twisted-web
mailing list