未定义全局名称“_tt_modules”
global name '_tt_modules' is not defined
使用tornado==4.1
这是应用程序:
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write(templates.load("index.html").generate())
class NavModule(tornado.web.UIModule):
def render(self):
return self.render_string('modules/navigation.html')
class FooterModule(tornado.web.UIModule):
def render(self):
return self.render_string('modules/footer.html')
application = tornado.web.Application(
tornadio2.TornadioRouter(SocketConnection).apply_routes(routes),
handlers=[(r'/', MainHandler)],
ui_modules={'Footer': FooterModule,
'NavigationModule': NavModule})
及部分模板页面:
<ul>
{% block right-nav %}
<li>
{% module GlitchNavigationModule() %}
</li>
</ul>
</section>
{% end %}
</div>
{% block footer %}
<div class="container">
{% module Footer() %}
</div>
{% end %}
对于模块 Footer
它按预期工作,但是对于 NavigationModule
错误:
NameError: global name '_tt_modules' is not defined
我可以这样做:
{% include 'modules/navigation.html' %}
甚至,apparently 分配变量:
{% set some_variable = "text2" %}
但是谁能看到或解释为什么只有一个模块真正按预期工作?
要使用 UIModules
,您必须使用 RequestHandler.render
方法。这意味着将 template_path
或 template_loader
传递给 Application
构造函数(而不是像您在这里所做的那样创建全局模板加载器),并使用 self.render('index.html')
而不是 self.write(templates.load('index.html').generate())
使用tornado==4.1
这是应用程序:
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write(templates.load("index.html").generate())
class NavModule(tornado.web.UIModule):
def render(self):
return self.render_string('modules/navigation.html')
class FooterModule(tornado.web.UIModule):
def render(self):
return self.render_string('modules/footer.html')
application = tornado.web.Application(
tornadio2.TornadioRouter(SocketConnection).apply_routes(routes),
handlers=[(r'/', MainHandler)],
ui_modules={'Footer': FooterModule,
'NavigationModule': NavModule})
及部分模板页面:
<ul>
{% block right-nav %}
<li>
{% module GlitchNavigationModule() %}
</li>
</ul>
</section>
{% end %}
</div>
{% block footer %}
<div class="container">
{% module Footer() %}
</div>
{% end %}
对于模块 Footer
它按预期工作,但是对于 NavigationModule
错误:
NameError: global name '_tt_modules' is not defined
我可以这样做:
{% include 'modules/navigation.html' %}
甚至,apparently 分配变量:
{% set some_variable = "text2" %}
但是谁能看到或解释为什么只有一个模块真正按预期工作?
要使用 UIModules
,您必须使用 RequestHandler.render
方法。这意味着将 template_path
或 template_loader
传递给 Application
构造函数(而不是像您在这里所做的那样创建全局模板加载器),并使用 self.render('index.html')
而不是 self.write(templates.load('index.html').generate())