Python / Tornado - 为什么我收到错误:self未定义?

时间:2013-02-05 08:11:58

标签: python tornado

我刚开始使用龙卷风。我想要做的就是点击索引上的提交按钮,然后通过表单操作发送到登录(这到目前为止);但是,我无法将发布的数据登录并使其正常工作。 第一个问题是,为什么我会收到错误:

 password = self.get_argument('password', None)
 NameError: name 'self' is not defined

到目前为止,这是python:

 import os

 import tornado.web
 import tornado.ioloop

 class MainHandler(tornado.web.RequestHandler):
      def get(self):
          self.render("index.html")

 class LoginHandler(tornado.web.RequestHandler):
      def post(self):
          useremail = self.get_argument('useremail', None)
          password = self.get_argument('password', None)
          self.render("login.html") 

 def main():
     application = tornado.web.Application([ 
          (r"/", MainHandler),
          (r"/login", LoginHandler), 
          (r"/css/(.*)", tornado.web.StaticFileHandler, {"path": os.path.join(os. path.dirname(__file__), 'css')}),
          (r"/pictures/(.*)", tornado.web.StaticFileHandler, {"path": os.path.join(os.path.dirname(__file__), 'pictures')}),
     ])
     application.listen(8888)
     tornado.ioloop.IOLoop.instance().start()

 if __name__ == "__main__":
     main()

其次,还有什么看起来很明显错在这里吗?我非常不确定我应该如何呈现Login.html与Index.html等网页。

从语法上讲,这似乎也有效:return self.write(open("index.html", 'r').read()) 这与我目前的情况完全相同?

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

你的缩进是混淆的,混合空格和标签。使用python -tt进行验证。

答案 1 :(得分:0)

如果你这样做

class MainHandler(tornado.web.RequestHandler):
      def get(self):
          self.render("index.html")
      def post(self):
          self.render("index.html")

它也将为post.html提供服务。