That works. Thank you

On May 5, 3:27 pm, Jonathan Lundell <jlund...@pobox.com> wrote:
> On May 5, 2010, at 12:16 PM, Chris wrote:
>
> > How would you get thecurrenturllocation?
>
> Generally speaking, you want to use URL(r=request, args=request.args, 
> vars=request.vars), or something like that (I may not have all the spelling 
> right).
>
> That will not include the host part of the URL, which is normally just what 
> you want; the browser will use the same host that it used to get the page.
>
>
>
> > I've tried to build thecurrenturl using request.env.http_host +
> > request.env.path_info, but it doesn't take into account routes.py.
>
> > For example using that method returns 127.0.0.1:8000/init/default/
> > contact, but I want it to returnhttp://127.0.0.1:8000/contact--
> > which is the what is displayed in the browser.
>
> > On May 3, 8:59 pm, Jonathan Lundell <jlund...@pobox.com> wrote:
> >>> On Mon, May 3, 2010 at 11:08 PM, Jonathan Lundell <jlund...@pobox.com> 
> >>> wrote:
> >>> web2py probably isn't setting referer on a redirect, and if it did, you'd 
> >>> have to interpret the URL.
>
> >>> No. If I have no redirect and call alocationwith no args the referer is 
> >>> not set when I arrive at web2py's default "Internal error" page. Which is 
> >>> okay because the standard says referer is optionally set by the client.
>
> >>> How about putting the previouslocationin session before you redirect?
>
> >>> That works on some instances, but not for controlling for the wrong 
> >>> number or the wrong parameters. A concrete example:
>
> >>> 1. Currently inwww.domain.com/a/c/f/arg1
> >>> 2. User edits address bar and presses enter (removed 
> >>> arg1):www.domain.com/a/c/f/
> >>> 3. The called action:
>
> >>> def f():
> >>>     if not request.args:
>
> >>>         redirect(request.last_location) # including args
>
> >>> Perhaps someone knows of an alternative way to accomplish the same?
>
> >> The session is pretty much the only place you've got to keep information 
> >> between pages. In the above example, in step 1, you need to save 
> >> thecurrentlocationin session. You can do that in f() before you return, or 
> >> if you want to always do it (from every c/f), you could perhaps do it in 
> >> your layout.html: copy thelocationfrom request to session. (That won't 
> >> work for redirects, but you might not want it to.)

Reply via email to