我有以下代码:
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
如何打破它?
为什么我不能像第二个例子那样保留两个全局变量?
答案 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进行试用。