0

我刚开始使用 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()) 与我目前拥有的相比,这到底是做什么的?

谢谢您的帮助!

4

2 回答 2

3

您的缩进很糟糕,混合了空格和制表符。用于python -tt验证。

于 2013-02-05T08:17:55.680 回答
0

如果你这样做

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

它也会为 POST 提供 index.html。.

于 2013-12-04T01:34:07.650 回答