我刚开始使用龙卷风。我想要做的就是点击索引上的提交按钮,然后通过表单操作发送到登录(这到目前为止);但是,我无法将发布的数据登录并使其正常工作。 第一个问题是,为什么我会收到错误:
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())
这与我目前的情况完全相同?
感谢您的帮助!
答案 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提供服务。