2013-02-05 44 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太。 。