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.

_______________________________________________
Web-SIG mailing list
Web-SIG@python.org
Web SIG: http://www.python.org/sigs/web-sig
Unsubscribe: 
http://mail.python.org/mailman/options/web-sig/archive%40mail-archive.com

Reply via email to