[mod_python] Detecting Back Button Usage

Clodoaldo clodoaldo.pinto.neto at gmail.com
Tue Mar 20 14:53:33 EST 2007


2007/3/20, Kenneth Loafman <kenneth at loafman.com>:
> Clodoaldo wrote:
> > 2007/3/20, Kenneth Loafman <kenneth at loafman.com>:
> >> Clodoaldo wrote:
> >> > 2007/3/20, Kenneth Loafman <kenneth at loafman.com>:
> >> >> I'm using mod_python under Ubuntu Edgy 64, doing some basic plots of
> >> >> data and allowing users to select a point to center on a region and
> >> gen
> >> >> the next plot.  All of that works as long as the user moves forward.
> >> >> The problem comes in the use of the back button.  The browser merely
> >> >> displays the last page rather than rebuilding it, or at least
> >> restoring
> >> >> the variables.  This leads to a lot of confusion because the server is
> >> >> on one set of plot values and the browser is now on another.  This
> >> seems
> >> >> to be a common problem.  Is there a solution, or should I just warn
> >> the
> >> >> user not to use the browser back button?
> >> >
> >> > How does the user select the point? Entering it in a form field? If so
> >> > save the plot values (the page state) on the page using a hidden field
> >> > inside the form:
> >> > <input type="hidden" name="variable_1" value="99.9">
> >> > <input type="hidden" name="variable_2" value="33.3">
> >> >
> >> > When the form is submitted those values will be available to your
> >> script.
> >>
> >> What I am doing is this:
> >>
> >> def regen_plot(req):
> >>     <plot logic snipped>
> >> return """\
> >> %s
> >> <div align="center">
> >> <a href="/demo/index/display_hit">
> >> <img src="/demo/%s.gif" ismap border=0></a>
> >> <p>X range is %d through %d seconds</p>
> >> </div>
> >> %s
> >> """ % (_head, dbname, xrng[0], xrng[1], _tail(req))
> >>
> >> Then when the user hits a point on the plot, display_hit is called.  I
> >> translate the x,y args from the URL into plot space, center the point
> >> around a smaller region, and plot again.  Going forward, it all works.
> >> Session() vars work, but since I'm not in a form, and there's no submit
> >> button, the hidden values don't work.  req.form.get('x') fails.
> >>
> >> Is it possible to get <form> to use an <img ... ismap> tag in lieu of
> >> the submit button?
> >
> > I don't know. What if you just set the the values in the URL? This way
> > the user could even bookmark each frame of his interest.:
> >
> >> <a href="/demo/index/display_hit?var_1=99.9&var_2=33.3">
>
> I tried that and the values just go away.  The <img...ismap> tag appends
> the x,y values of the mouse to the url, so what you see in the status
> bar is:
>
> /demo/index/display_hit?var_1=99.9&var_2=33.3?5,9
>
> When the mouse is clicked, the first ?... goes away before being passed.
>
> /demo/index/display_hit?5,9

I tried this and it worked in Firefox 1.5:

<html>
<body>
<form method="get" action="">
<input type="image" name="my_image" src="ado_net_costas.png">
<input type="hidden" name="x" value="99.9">
<input type="hidden" name="y" value="33.3">
</form>
</body>
</html>

When I click the image this URL is sent:
http://teste.s0/python/imagemap.html?my_image.x=293&my_image.y=222&x=99.9&y=33.3


-- 
Clodoaldo Pinto Neto


More information about the Mod_python mailing list