如何将模块导入web.py模板?

时间:2011-02-18 21:55:55

标签: python web.py

我有以下代码:

render = web.template.render('templates/')
app = web.application(urls, globals())

我在web.py cookbook中了解了模板导入。

现在,当我尝试在模板中导入re时:

render = web.template.render('templates/', globals={'re':re})
app = web.application(urls, globals())

我收到了一个错误:

<type 'exceptions.TypeError'> at /'dict' object is not callable

这一行在追溯中显示:app = web.application(urls, globals())

但是当我修改它时:

app = web.application(urls)

错误消失了,我的模板中导入了re

我不明白globals={'re': re}中的web.template.render如何打破它?

为什么我不能像第二个例子那样保留两个全局变量?

1 个答案:

答案 0 :(得分:5)

我猜你在脚本或模板中还有其他的东西导致了这个错误。如果你展示了完整的例子,那么它会更容易看到。这是一个有效的例子:

import web
import re

urls = ('/', 'index')
render = web.template.render('templates/', globals={'re':re})
app = web.application(urls, globals())

class index:
    def GET(self):
        args = web.input(s='')
        return render.index(args.s)

if __name__ == '__main__':
    app.run()

模板,index.html:

$def with(s)

$code:
    if re.match('\d+', s):
        num = 'yes'
    else:
        num = 'no'

<h1>Is arg "$:s" a number? $num!</h1>

浏览到http://localhost:8080/?s=123进行试用。