我在web2py的模块中有一个python函数来发送电子邮件。它有以下代码
message = response.render('scheduler/connectionmessage.html',cont)
我收到错误
<type 'exceptions.NameError'> name 'response' is not defined"
如何在模块中使用渲染?目标是在模块下有一些这样的脚本,并通过调度程序从控制器下的存根执行它们。 更多代码 -
def send_email_invites():
from gluon import *
from gluon.template import render
db = current.db
......<execute query and populate dictionary>
message = response.render('scheduler/connectionmessage.html',cont)
就是这样。
答案 0 :(得分:1)
您的代码已包含from gluon import *
,这意味着您已导入线程本地current
对象。该对象包含当前请求的response
对象,因此您应该引用current.response
而不仅仅是response
。
请注意,这在模型,控制器和视图文件中不是必需的,因为这些文件是在已包含response
对象的全局环境(以及其余大部分web2py API)中执行的。 / p>
有关详细信息,请参阅http://web2py.com/books/default/chapter/29/04/the-core#Accessing-the-API-from-Python-modules。
答案 1 :(得分:0)
在致电response.render()
from gluon.globals import Response
response = Response()
我知道这很诱人,但要尽量避免from xyz import *
并明确。