Cookie Confusion - How to Set a Cookie

cbhoem at gmail.com cbhoem at gmail.com
Tue Apr 29 22:01:50 CEST 2008


On Apr 28, 1:37 pm, Aaron Watters <aaron.watt... at gmail.com> wrote:
> On Apr 28, 9:42 am, cbh... at gmail.com wrote:
>
> > ....I see the cookie in my HTTP header
> > but do not get anything in the cookie text file.  I'm working on
> > linux.
>
> > print "Content-type: text/html"
> > cookie = Cookie.SimpleCookie()
> > cookie['Test'] = 'abc'
> > print cookie
> > print
>
> > Are there rules about where in the header the set cookie line should
> > be?
>
> Hi Christian.  I think the cookie can go anywhere in
> the header, but I usually put it before the content-type.
> If you want to store the cookie to a file,
> or even better, to a database of some sort, you have to
> do it yourself, the Cookie module doesn't do it for you,
> I hope.
>
>   # store cookie to /tmp/cookie.txt
>   file("/tmp/cookie.txt","w").write(str(cookie))
>
> For parsing cookies, I stole and modified this from
> the Django source (for use in a cgi script):
>
> ===
> from Cookie import SimpleCookie
> import os
>
> # stolen and modified from Django
> def parse_cookie(cookie=None, environ=None):
>     if cookie is None:
>         if environ is None:
>             environ = os.environ
>         cookie = environ.get('HTTP_COOKIE', '')
>     if cookie == '':
>         return {}
>     c = SimpleCookie()
>     c.load(cookie)
>     cookiedict = {}
>     for key in c.keys():
>         cookiedict[key] = c.get(key).value
>     return cookiedict
>
> ===
> All the best.  -- Aaron Watters
>
> ===http://www.xfeedme.com/nucular/pydistro.py/go?FREETEXT=monster


Thanks for the code, Aaron.  I will give it a try.

I've been reading some more about cookielib and am not sure whether I
should use Cookie or cookielib.  This is what I want to do:  a user is
going to login.  Upon a successful login, I want to write their name
and date/time of visit to a cookie file. Which is the correct python
module to use?



More information about the Python-list mailing list