1

如何在视图中使用模块?例如我正在尝试使用该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()功能来完成它?

附带说明一下,我可以访问dbsession从我的视图中访问,这是因为它们是在我的models?

Web2Py Version 1.99.7 (2012-03-04 22:12:08) stable

更新:在我的模型中导入它db.py似乎可以解决它。有一个更好的方法吗?

4

1 回答 1

4

只是为了记录。

使用 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)

您的另一个选择是在模型文件中导入降价。

于 2012-03-13T07:38:02.537 回答