0

我编辑了这个问题来展示一个小例子。此演示代码来自龙卷风简介书,并给我这个错误:

Traceback (most recent call last):
  File "demo.py", line 25, in <module>
    ui_modules={'Hello', HelloModule}
  File "/usr/local/lib/python2.7/dist-packages/tornado-3.1.1-py2.7.egg/tornado/web.py", line 1422, in __init__
    self._load_ui_modules(settings.get("ui_modules", {}))
  File "/usr/local/lib/python2.7/dist-packages/tornado-3.1.1-py2.7.egg/tornado/web.py", line 1545, in _load_ui_modules
    assert isinstance(modules, dict)
AssertionError

演示.py

import tornado.web
import tornado.httpserver
import tornado.ioloop
import tornado.options 
import os.path
from tornado.options import define, options
define("port", default=8000, help="run on the given port", type=int)


class HelloHandler(tornado.web.RequestHandler):
    def get(self):
        self.render('hello.html')


class HelloModule(tornado.web.UIModule):
    def render(self):
        return '<h1>Hello, world!</h1>'

if __name__ == '__main__':
    tornado.options.parse_command_line()

    app = tornado.web.Application(
        handlers=[(r'/', HelloHandler)],
        template_path=os.path.join(os.path.dirname(__file__), 'templates'),
        ui_modules={'Hello', HelloModule}
    )
    server = tornado.httpserver.HTTPServer(app)
    server.listen(options.port)
    tornado.ioloop.IOLoop.instance().start()

你好.html

<html>
<head><title>UI Module Example</title></head>
<body>
{% module Hello() %}
</body>
</html>
4

2 回答 2

5

ui_modules={'Hello', HelloModule}不是a dict,是a set

它应该是:(ui_modules={'Hello': HelloModule}请注意逗号已替换为冒号)。

于 2013-10-31T14:28:50.780 回答
1

这本书实际上有一个勘误表位于此处

于 2015-02-23T15:36:07.600 回答