2010-09-28 130 views
2

由於某種原因,我無法實例化MainHandler以外的set_cookie .. 這是一個小小的代碼來顯示我想要做什麼.. 任何人都可以幫忙?龍捲風請求處理程序

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 

任何想法?

回答

7

我認爲這是自我解釋。

set_cookie是tornado.web.RequestHandler

的方法,而在你的代碼「self.set_cookie」,自我是指類GenCookie的對象。

您的代碼可以被修改,以通過必要的參考

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