【问题标题】:Web.py How to access render function in this caseWeb.py 在这种情况下如何访问渲染功能
【发布时间】:2011-07-25 02:58:42
【问题描述】:

我是 Python 和 Web.py 的新手,但我对这个问题感到很头疼。我有一个代码布局,其中我的app.py 文件位于我网站的根目录中。所有页面都在一个子目录中,名为pages。这是我的 app.py 代码

import web
import page.index

urls = (
    '/', 'page.index.index',
)

render = web.template.render('templates/', base = "layout") # Start the template 
app = web.application(urls, globals()) # Start the app

if __name__ == "__main__":
    app.run()

现在,它完美地执行了。现在,在 index.py 文件中,这是我的代码:

class index:
    def GET(self):
        testing = 'Hello World'
        return render.index(testing)

我得到的错误是这样的:

<type 'exceptions.NameError'> at /
global name 'render' is not defined
Python  /Volumes/Local Disk 2/Work/Casting Board/com/index.py in GET, line 3
Web     GET http://127.0.0.1:8080/

基本上,我正在尝试从名为 page.index 的 moucle 访问函数(或者它是方法或类。只是来自 PHP,所以不知道终端)render。我该如何解决这个问题?

【问题讨论】:

标签: python web.py


【解决方案1】:

在 index.py 页面中,是否应该包含 from web.template import render

【讨论】:

  • 据我了解,'render = web.template.render('templates/', base = "layout")' 将文件作为函数加载。我可以按照你说的做,但它没有工作所需的功能,因为它尚未设置。有什么帮助吗?
  • 查看错误消息global name 'render' is not defined,它说它没有找到render 的定义。顺便说一句,在您的评论中,您确定要通过分配来重载render 的定义吗?
  • 我正在尝试将“渲染”注册为全局。如果我将索引类放在 app.py 文件中,这一切都有效,但是一旦我将两者分开,它就会中断。我需要知道解决这个问题的方法,所以我可以从另一个文件调用 render.index() 。可能我做不到?
  • 我们不会说它是全球性的。您可以将一个对象(模块、类、函数)从一个模块导入另一个模块,以便在另一个模块中使用它。唯一要避免的是循环导入 a -> b -> a。如果没有,你应该没问题。
【解决方案2】:

假设web.template.render() 返回一个包含index() 方法的对象(我不熟悉web.py),你需要告诉Python 在哪里可以找到这个对象。

index.py:

import app

然后:

    return app.render.index(testing)

【讨论】:

    【解决方案3】:

    您可以在 app.py 文件中包含索引类 (index.py)。然后导入 web 模块将在代码开头引入函数“render”的定义。

    【讨论】:

      猜你喜欢
      • 2020-10-13
      • 1970-01-01
      • 2018-06-10
      • 2019-01-15
      • 1970-01-01
      • 1970-01-01
      • 2022-09-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多