请教 tornado 模板需要的全局参数的正确使用方法[我不是处女座]

2014-03-05 15:32:57 +08:00
 arbipher
# 模板 #
有个叫layout的模板,include了一个nav的模板。nav就是最上面的导航,比如v2ex的“首页”“工作空间”。。。。
其他页面extends这个layout模板,比如index、profile等等。

# 我的问题 #
NAVS = ['index', 'profile', 'workspace']
像这样的导航的条目的列表,我应该定义在哪里?
如果定义在web.py里,我每次render都要传参数 navs=NAVS 感觉有点多余?还有在模板里读全局变量?
如果定义在模板里,那我web.py怎么读到这些值……

朱军怎么处理这个问题的?
5335 次点击
所在节点    Python
8 条回复
cute
2014-03-05 15:43:26 +08:00
tornado.web.UIModule
arbipher
2014-03-05 16:02:15 +08:00
@cute 读了下文档和demo里面的blog项目。UIModule可以解决一个参数传给很多页面的问题。
这样原来的:
- 模板A include 模板B
就变成了:
- 模板A load Module_MB
- Module_MB render 模板B

(感觉又平白多了一层。。。)
geew
2014-03-05 16:12:14 +08:00
def get_template_namespace(self):
""" 添加额外的模板变量, 默认有:
handler=self,
request=self.request,
current_user=self.current_user,
locale=self.locale,
_=self.locale.translate,
static_url=self.static_url,
xsrf_form_html=self.xsrf_form_html,
reverse_url=self.reverse_url
"""
重写requestHandler的这个函数就行了
arbipher
2014-03-05 16:19:57 +08:00
@cute 我用的模板是pyjade,改造成功了。感谢已发送。
arbipher
2014-03-05 16:21:14 +08:00
@geew 懂了。那我让那一排一级页面继承这个handler好了。
jinnietsai
2014-03-08 22:16:17 +08:00
我也在用tornado,里面很多东西不会,官方提供的文档又太少。就只会用post,get这两个。。
arbipher
2014-03-08 22:41:31 +08:00
@jinnietsai HTTP请求POST和GET就够了,RESTful API还需要别的。我也在一边摸索一边学习。在v2ex和tornado的mail-list提问,都能很快得到回答的。
geew
2014-03-11 09:49:57 +08:00
@jinnietsai introduction to tornado 这本书写得很好 去吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/102978

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX