【问题标题】:web2py: global name 'crud' is not definedweb2py:未定义全局名称“crud”
【发布时间】:2015-01-30 11:00:23
【问题描述】:

我目前正在学习 web2py 教程,并被要求附加到我的控件/default.py:

def entry_post():
"""returns a form where the can entry a post"""
form = crud.create(db.post)
return dict(form=form)

这很好,但如果我尝试访问:mywebsite/app/default/entry_post,我会收到票证错误: 未定义全局名称“crud”

现在,我已经阅读了 web2py 文档并且知道 crud.create(db.table) 是一个有效的语法,那么为什么会这样呢?

感谢您的回答

【问题讨论】:

  • 因为你需要定义一个名为crud的变量。你的程序中有crud = something吗?此外,实际程序是否正确缩进(它不在您的帖子中)?
  • 它是缩进的,但在导入中有一个我没有看到的错字(重要的是没有“Crud”的大写字母)。

标签: python web2py


【解决方案1】:

顺便说一句。 Crud 是我们不再支持的旧 API。

form = crud.create(db.post)

应该改写为

form = SQLFORM(db.post).process()

【讨论】:

  • 非常感谢您的回答,我解决了问题并且相处融洽(这是从 gluon.tools 导入时的拼写错误)如果支持结束,我将避免使用它,但是在鼓励使用官方手册,但这可能是因为是第 5 版(在官方链接中,即使第 6 版应该完成)感谢您的时间和开发软件。曼努埃尔
【解决方案2】:

Crud 必须被导入并实例化:

from gluon.tools import Crud
crud = Crud(db)

这通常在模型文件中完成,因此可以在任何控制器中使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-04
    • 2015-12-22
    • 2014-04-18
    • 2015-08-08
    • 2011-04-27
    • 2013-09-04
    • 2015-02-26
    • 2016-09-11
    相关资源
    最近更新 更多