这是我的简单龙卷风项目main.py文件:
import os
import os.path
import tornado.ioloop
import tornado.web
import tornado.httpserver
import tornado.options
from tornado.options import options
class Index(tornado.web.RequestHandler):
def get(self, *args, **kwargs):
self.write('Hello')
url_patterns = {
(r'/', Index),
}
if __name__ == "__main__":
tornado.options.parse_command_line()
app = tornado.web.Application(
url_patterns,debug=True,
cookie_secret="*****",
xsrf_cookies= False,
template_path=os.path.join(os.path.dirname(__file__), "templates"),
static_path= os.path.join(os.path.dirname(__file__), "static"),
)
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(8080)
tornado.ioloop.IOLoop.instance().start()
当我想运行此文件时,错误说:
File "main.py", line 16
(r'/', Index),
^
SyntaxError: invalid syntax
我想在centos 6和python 2.7.8上运行它。这是我的错误图片:
我的项目出了什么问题?
答案 0 :(得分:3)
您正在使用的大括号{ }
意味着您正在尝试定义字典或集合。我认为url_patterns
与Django中的对应物一样,是一个元组,因此您需要使用括号( )
代替:
url_patterns = (
(r'/', Index),
)
答案 1 :(得分:3)
我猜你在python2.6上,因为似乎是python2.7的有效语法。在python2.7上,
url_patterns = {
(r'/', Index),
}
将尝试构建一个具有单个成员的集合,该成员是一个2元组。但是,如果TypeError
无法播放,则Index
会失败。设置文字直到python2.7才存在,所以对于早期的python版本,你的代码将抛出SyntaxError
。
一般来说,根据我的经验(使用webapp2
),处理程序的顺序很重要 - 因此,您最好使用有序迭代而不是set
。可能是tuple
或list
。 e.g:
url_patterns = [
(r'/', Index),
]
显然如果tornado.web.Application
需要其中一个,请使用;-)(The docs show a list being used,这样可能是安全的......)