龙卷风请求处理器

2 投票
1 回答
5769 浏览
提问于 2025-04-16 04:43

不知道为什么,我无法在 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

有什么想法吗?

1 个回答

7

我觉得这句话自己就能说明问题。

set_cookie 是 tornado.web.RequestHandler 里的一个方法。

在你的代码中,“self.set_cookie”里的 self 指的是 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

撰写回答