V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
lio
V2EX  ›  Python

tornado模板中的参数一般怎么传递过去?

  •  
  •   lio · 2013-01-01 21:17:10 +08:00 · 5396 次点击
    这是一个创建于 4370 天前的主题,其中的信息可能已经有所发展或是发生改变。
    模板中用{{}}括起来的参数,可以在render()时传进来,但有时参数有很多。我看有的程序,是改写render_string(),把某些参数直接加进去,再render()时就不用再写了。还有的是放到setting里,模板里用{{handler.XX}}来调用。

    好像也没觉出有什么不同来。

    请教一下高手,应该怎么用。
    10 条回复    1970-01-01 08:00:00 +08:00
    INT21H
        1
    INT21H  
       2013-01-01 21:29:32 +08:00
    **locals()
    lio
        2
    lio  
    OP
       2013-01-01 22:10:36 +08:00
    @INT21H 没有看懂。拜托说明白些。
    INT21H
        3
    INT21H  
       2013-01-01 22:13:33 +08:00
    self.render("tmp.html", author=author, objects=objects, cat=cat, tags=tags)

    以前是不是这样写?
    然后你试试 self.render("tmp.html", **locals())
    Niris
        4
    Niris  
       2013-01-01 22:27:04 +08:00
    http://www.v2ex.com/t/45454

    没理解错吧。
    sillyousu
        5
    sillyousu  
       2013-01-01 22:43:06 +08:00
    @INT21H
    args = locals()
    args.pop('self')
    self.render('tmp.html',**args)
    不去掉self好像会出错的
    INT21H
        6
    INT21H  
       2013-01-01 22:46:41 +08:00
    @sillyousu 哦对,有self的,我之前用Flask直接render,忘了Tornado是self.render了,不过 @Niris 的那个帖子貌似解决的更好点。
    66web
        7
    66web  
       2013-01-01 22:52:18 +08:00
    刚才没留意看,居然把Tornado看成了BT种子,哈哈!!
    kernel1983
        8
    kernel1983  
       2013-01-02 15:59:35 +08:00
    不是放在setting里面, 而是直接self.xxx = xxx

    然后{{handler.XX}}

    具体可以看这个 http://segmentfault.com/q/1010000000137711
    davidx
        9
    davidx  
       2013-01-03 11:49:50 +08:00
    还有一种方法, 定义一个字典叫d, 在view里, 任何需要传到模板里的变量, 都放进d里, 比如d['post'] = from_db_post. 渲染的时候, 用self.render('XXX.html', **d), 就可以了
    kenneth
        10
    kenneth  
       2013-01-03 14:13:56 +08:00
    @INT21H @lio @sillyousu @66web @kernel1983 @davidx
    self.render("tmp.html", **locals())
    这个方法我试了,怎么不行?能否说详细点。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5284 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 08:27 · PVG 16:27 · LAX 00:27 · JFK 03:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.