[Web-SIG] [proposal] wsgiref.util.abs_url
Phillip J. Eby
pje at telecommunity.com
Mon May 5 19:39:50 CEST 2008
At 06:27 PM 5/5/2008 +0200, Manlio Perillo wrote:
>Phillip J. Eby ha scritto:
>>I think that it doesn't accept a relative URL, it accepts an absolute path.
>
>What do you mean?
>
> environ = {}
> setup_testing_defaults(environ)
>
> url = '/a/b/'
That's a relative URL that's also an absolute path. Try a relative
URL like './a/b', or just plain 'a/b'.
> self.failUnlessEqual(
> util.abs_url(environ, url), 'http://127.0.0.1/a/b/')
>
>>I also think that using urlparse.urljoin() with either
>>request_uri() or application_uri() would be a clearer (and tested)
>>way to obtain an absolute URL, and more generally useful.
>
>But application_uri also includes SCRIPT_NAME.
Yes, and you might want to use it as the base against which a
relative URL will be resolved -- i.e. an application-relative URL,
vs. a request-relative URL. In fact, application_uri() would
probably be *more* useful, since if you want a request-relative URL,
there's no need to turn it into an absolute URL, since you could just
use it in its relative form.
Note, however, that in either case, using a relative URL that's an
absolute path (e.g. '/a/b'), will still produce the same result as
your function would. It's just that urljoin also works properly for
all kinds of relative urls, not just the absolute-path subset.
More information about the Web-SIG
mailing list