2013-02-05 45 views
0

我刚开始使用Tornado。我想要做的就是点击索引上的提交按钮,然后通过表单动作发送到登录页面(目前为止这样做);然而,我无法获得发布的数据登录并使其工作。 第一个问题是,为什么我收到错误:Python /龙卷风 - 为什么我得到错误:自我没有定义?

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

这里的蟒蛇至今:

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()) 究竟是什么与我目前的做法?

感谢您的帮助!

回答

3

您的缩进是伪装的,混合了空格和制表符。使用python -tt进行验证。

+0

是的,这工作谢谢你。有没有办法呈现login.html,无论获取或发布的方法?我遇到了另一个问题,如果我目前正在从索引登录,并且我转到url栏并单击enter,我将得到一个405方法不允许的错误。我想解决这个问题的唯一方法是在LoginHandler中添加一个get和post方法,并且有两个'self.render(“login.html”)'(每个都有一个)这似乎过分了.. – JohnZ

+0

关于Tornado能够回答,抱歉。 –

0

,如果你还做

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

它将成为index.html的为POST太。 。