title: Cookies using Python and Google App Engine
body: <p>I'm developing an app on the Google App Engine and have run into a problem. I want to add a cookie to each user session so that I will be able to differentiate amongst the current users. I want them all to be anonymous, thus I do not want a login. Therefor I've implemented following code for cookies.</p>
  
  <pre><code>def clear_cookie(self,name,path="/",domain=None):
      """Deletes the cookie with the given name."""
      expires = datetime.datetime.utcnow() - datetime.timedelta(days=365)
      self.set_cookie(name,value="",path=path,expires=expires,
                      domain=domain)    
  
  def clear_all_cookies(self):
      """Deletes all the cookies the user sent with this request."""
      for name in self.cookies.iterkeys():
          self.clear_cookie(name)            
  
  def get_cookie(self,name,default=None):
      """Gets the value of the cookie with the given name,else default."""
      if name in self.request.cookies:
          return self.request.cookies[name]
      return default
  
  def set_cookie(self,name,value,domain=None,expires=None,path="/",expires_days=None):
      """Sets the given cookie name/value with the given options."""
  
      name = _utf8(name)
      value = _utf8(value)
      if re.search(r"[\x00-\x20]",name + value): # Don't let us accidentally inject bad stuff
          raise ValueError("Invalid cookie %r:%r" % (name,value))
      new_cookie = Cookie.BaseCookie()
      new_cookie[name] = value
      if domain:
          new_cookie[name]["domain"] = domain
      if expires_days is not None and not expires:
          expires = datetime.datetime.utcnow() + datetime.timedelta(days=expires_days)
      if expires:
          timestamp = calendar.timegm(expires.utctimetuple())
          new_cookie[name]["expires"] = email.utils.formatdate(timestamp,localtime=False,usegmt=True)
      if path:
          new_cookie[name]["path"] = path
      for morsel in new_cookie.values():
          self.response.headers.add_header('Set-Cookie',morsel.OutputString(None))
  </code></pre>
  
  <p>To test the above code I've used the following code:</p>
  
  <pre><code>class HomeHandler(webapp.RequestHandler):
      def get(self):
          self.set_cookie(name="MyCookie",value="NewValue",expires_days=10)
          value1 = str(self.get_cookie('MyCookie'))    
          print value1
  </code></pre>
  
  <p>When I run this the header in the HTML file looks as follows:</p>
  
  <blockquote>
    <p>None
    Status: 200 OK
    Content-Type: text/html; charset=utf-8
    Cache-Control: no-cache
    Set-Cookie: MyCookie=NewValue; expires=Thu, 06 Dec 2012 17:55:41 GMT; Path=/
    Content-Length: 1199</p>
  </blockquote>
  
  <p>"None" in the above refers to the "value1" from the code.</p>
  
  <p>Can you please tell me why the cookie value is "None", even when it is added to the header?</p>
  
  <p>Your help is very much appreciated.</p>