如何在视图中使用模块?
例如,我正在尝试使用markdown
模块,因此我将其导入到我的控制器中:
from gluon.contrib.markdown.markdown2 import markdown
我使用response.render
return response.render('default/main.html', locals())
但是当我尝试在视图中访问它时,
{{=markdown(post.message)}}
我收到错误消息,说明它没有定义:
<type 'exceptions.NameError'> name 'markdown' is not defined
如何将模块传递给视图?是否有替代locals()
功能来完成它?
在旁注中,我可以从我的观看中访问db
和session
,这是因为它们是在models
中导入的吗?
Web2Py Version 1.99.7 (2012-03-04 22:12:08) stable
更新:在我的模型db.py
中导入它似乎可以解决它。有更好的方法吗?
答案 0 :(得分:4)
仅供记录。
使用locals()
并不是一个好主意而不是将locals传递给response.render,最好创建一个字典,其中包含您希望可用于呈现视图的键。
您还可以在该词典中包含对降价的引用
from gluon.contrib.markdown.markdown2 import markdown
mydict = dict(markdown=markdown, anotherkey=anothervalue)
return response.render("path/to/view", mydict)
不要尝试将locals()扩展到mydict,如果尝试这样做,你会遇到问题。
您也可以使用默认的web2py行为
from gluon.contrib.markdown.markdown2 import markdown
response.view = "path/to/view"
return dict(markdown=markdown, anotherkey=anothervalue)
另一个选择是在模型文件中导入降价。