2010-09-28 21 views
2

Pour une raison quelconque, je suis incapable d'instancier le set_cookie en dehors de MainHandler .. Ceci est un petit code pour montrer ce que je veux faire .. Quelqu'un peut-il aider ??Tornado Request Handler

import tornado.httpserver 
import tornado.ioloop 
import tornado.options 
import tornado.web 
from tornado.options import define, options 
from GenCookie import * 

class MainHandler(tornado.web.RequestHandler): 
    def get(self): 
     g=GenCookie() 
     response = g.genCookie() 

class GenCookie: 
def genCookie(self): 
    print self.request.remote_ip 
    print self.cookies 
    print self.request.headers 
    expires = datetime.datetime.utcnow() + datetime.timedelta(days=365) 
    if ("uid" in cookies): 
     self.set_cookie("uid", value=cookies["uid"],expires=expires) 
    else: 
     self.set_cookie("uid", value='dfc278623ab44df2bd501e106e81d146',expires=expires) 
    return 

Des idées?

Répondre

7

Je pensais que cela s'explique.

set_cookie est une méthode de tornado.web.RequestHandler

alors que dans votre code "self.set_cookie", self fait référence à l'objet de GenCookie de classe.

Votre code peut être modifié pour passer la référence nécessaire

class MainHandler(tornado.web.RequestHandler): 
     def get(self): 
       g=GenCookie(self) 
       response = g.genCookie() 

class GenCookie: 
def __init__(self, reqHandler): 
    self.reqHandler = reqHandler 

 def genCookie(self): 
    print self.request.remote_ip 
    print self.cookies 
    print self.request.headers 
    expires = datetime.datetime.utcnow() + datetime.timedelta(days=365) 
    if ("uid" in self.cookies): 
       self.reqHandler.set_cookie("uid", value=self.cookies["uid"],expires=expires) 
    else: 
       self.reqHandler.set_cookie("uid", value='dfc278623ab44df2bd501e106e81d146',expires=expires) 
    return