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
Livid
V2EX  ›  Python

关于 Jinja2 模版引擎的参数传递

  •  
  •   Livid · 2011-03-28 17:03:02 +08:00 · 5672 次点击
    这是一个创建于 4992 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有一些变量,在每次模版渲染的时候都会用到。

    但是 Jinja2 的 template.render() 接受的是变长参数,是否有什么办法可以在 template.render() 外面再加一层,从而每次自动传入一些必要参数呢?
    5 条回复    1970-01-01 08:00:00 +08:00
    Livid
        1
    Livid  
    MOD
    OP
       2011-03-28 17:13:31 +08:00
    OK,解决了。

    template.render() 支持两种方式传参:

    template.render(foo='bar')

    或:

    template.render({'foo' : 'bar'})

    但是不能混用,比如下面这样是不行的:

    template.render(foo='a', {'bar' : 'b'})
    lepture
        2
    lepture  
       2011-03-28 17:19:36 +08:00
    这样的思路不知可否?


    from jinja2 import Environment, FileSystemLoader

    class render_jinja:
    """
    modified from web.contrib.template
    """
    def __init__(self, *arg, **kwargs):
    extensions = kwargs.pop('extensions',[])
    filters = kwargs.pop('filters', {})
    gvars = kwargs.pop('gvars', {}) # global vars

    self._lookup = Environment(loader=FileSystemLoader(*arg, **kwargs), extensions=extensions)
    self._lookup.globals.update(gvars)
    self._lookup.filters.update(filters)

    def render_template(self, name, **kwargs):
    t = self._lookup.get_template(name)
    return t.render(**kwargs)


    然后给定值到gvars
    Livid
        3
    Livid  
    MOD
    OP
       2011-03-28 17:27:12 +08:00
    @lepture 感谢 :)

    主要是希望传递一些每次都会用到的值,比如当前用户,当前域名和图片服务器域名等等。

    目前通过改动 BaseHandler 包装了一切的龌龊。XD
    lepture
        4
    lepture  
       2011-03-29 01:20:44 +08:00
    悲剧,在打字的时候 @Livid 已经解决了。
    fanzeyi
        5
    fanzeyi  
       2011-03-29 21:33:04 +08:00
    我习惯性的弄个字典类型…………
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5825 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 03:21 · PVG 11:21 · LAX 19:21 · JFK 22:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.