web2py使用模块

时间:2014-01-21 13:34:29

标签: python module web2py scheduler

我在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)

就是这样。

2 个答案:

答案 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 *并明确。