【问题标题】:Using modules in views在视图中使用模块
【发布时间】:2012-03-13 06:02:20
【问题描述】:

如何在视图中使用模块? 例如我正在尝试使用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 中导入它似乎可以解决它。有没有更好的方法来做到这一点?

【问题讨论】:

    标签: web2py web2py-modules


    【解决方案1】:

    仅作记录。

    使用 locals() 不是一个好主意

    与其将局部变量传递给 response.render,不如创建一个字典,其中包含您希望用于呈现视图的键。

    您还可以在该词典中包含对 markdown 的引用

    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)
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-02
      • 2018-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多