[Tutor] Re: Cookie not reading first time through...

Rene Lopez renx99 at gmail.com
Tue Nov 2 17:28:24 CET 2004


Nobody replied to this, so I figure nobody does cgi scripts in python ;-)

but in regardless, I figured out the problem.... it was basically
faulty logic and not paying attention to variable scope... so it's
working now... woohoo!



On Sat, 30 Oct 2004 12:05:36 -0400, Rene Lopez <renx99 at gmail.com> wrote:
> I'm trying to learn how to use python for cgi scripts...
> 
> I created a form that submits some info that I put in a cookie.  Then
> the script calls itself and reads the cookie, and displays a different
> form to get more information.
> 
> The problem I'm running into is the script is setting the cookie...
> but it doesn't read it the first time through for some reason, if I
> immediately try it again it works fine.  So for some reason it's not
> picking up the cookie the first time.
> 
> Would it be a better idea to break the script into two different
> scripts to accomplish this?
> 
> Any advise would be appreciated, please be gentle, I'm still a newbie ;-)
> 
> here is the script:
> 
> #!/usr/bin/python
> 
> import cgi,os,Cookie
> import cgitb; cgitb.enable()
> 
> def name_race():
>     print "Content-Type: text/html\n\n"
>     print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"
> \"http://www.w3.org/TR/html4/strict.dtd\">"
>     print "<html>"
>     print "<body>"
>     print "<form method = post ACTION =\"test.py\"> "
>     print "<table><tr>"
>     print "<td><b>Name:</b></td><td><input type=text name=\"name\"></td></tr>"
>     print "</table>"
>     print "<p>"
>     print "<table>"
>     print "<tr>"
>     print "<td><b>Race:</b></td></tr>"
>     print "<tr>"
>     print "<td>Human</td><td><input type=radio name=\"race\"
> value=\"1\"></td></tr>"
>     print "<tr>"
>     print "<td>Elf</td><td><input type=radio name=\"race\"
> value=\"2\"></td></tr>"
>     print "</table>"
>     print "<p>"
>     print "<input type = hidden name=\"action\" value=\"getclass\">"
>     print "<input type = submit value =\"Enter\">"
> 
> def pick_class():
>     mycookie = Cookie.SmartCookie(os.environ.get("HTTP_COOKIE", ""))
>     race = mycookie["race"].value
>     name = mycookie["name"].value
>     print "Content-Type: text/html\n\n"
>     print "<html>"
>     print "<body>"
>     print name
>     print race
>     print "</body>\n</html>"
> 
> def print_sheet():
>     pass
> 
> def main():
>     form = cgi.FieldStorage()
>     mycookie = Cookie.SmartCookie()
>     if form.has_key("name") and form.has_key("race"):
>         if (form["action"].value == "getclass"):
>             mycookie["name"] = form["name"].value
>             mycookie["name"]["max-age"] = 60
>             mycookie["race"] = form["race"].value
>             mycookie["race"]["max-age"] = 60
>             print mycookie
> 
>             pick_class()
>     else: name_race()
> 
> main()
> --
> 
> Rene
> 


-- 

Rene


More information about the Tutor mailing list