2012-03-13 32 views
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

UPDATE:導入它在我的模型db.py似乎解決它。有一個更好的方法嗎?

回答

4

僅供記錄。

這不是一個好主意,用當地人()

強似當地人response.render,最好是創建一個你想成爲可被渲染視圖中的鍵的字典。

也可以包括在該詞典

from gluon.contrib.markdown.markdown2 import markdown 
mydict = dict(markdown=markdown, anotherkey=anothervalue) 
return response.render("path/to/view", mydict) 

不要一提到降價嘗試在延長當地人()來mydict,如果你試試這個,你會在運行的問題。

您也可以只使用默認web2py的行爲

from gluon.contrib.markdown.markdown2 import markdown 
response.view = "path/to/view" 
return dict(markdown=markdown, anotherkey=anothervalue) 

另一種選擇,你是在一個模型文件導入降價。