Web.py 如何在这种情况下访问渲染函数

3 投票
3 回答
1660 浏览
提问于 2025-04-16 22:11

我刚接触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的模块中访问一个叫render的函数(或者说是方法或类,我刚从PHP转过来,所以不太懂这些术语)。我该怎么解决这个问题呢?

3 个回答

1

你可以直接在你的app.py文件里包含你的索引类(index.py)。这样导入网络模块的时候,就会在你代码的开头引入“render”这个函数的定义。

1

假设 web.template.render() 返回的是一个包含 index() 方法的对象(我对 web.py 不太了解),你需要告诉 Python 这个对象在哪里。

index.py 文件中:

import app

然后:

    return app.render.index(testing)
1

在index.py这个文件里,你是否应该加上 from web.template import render 这行代码呢?

撰写回答