2011-07-25 41 views
3

我是Python和Web.py的新手,但我在这个问题上撕裂了我的头发。我有一个代码布局,在我的网站的根目录中有我的app.py文件。所有页面都在一个副导演中,名为pages。这里是我的app.py代码Web.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/ 

基本上,我试图访问功能(或者是方法或类。只是来自PHP,所以不知道从名为page.index的moucle的末端)render。我怎样才能解决这个问题?

+0

你确定你不需要使用'import pages'。哪个会寻找页面文件夹?请参阅https://github.com/alexksikes/mailer/blob/master/application.py,了解您尝试执行的操作。 – KyleWpppd

回答

1

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

+0

根据我的理解,'render = web.template.render('templates /',base =“layout”)'将文件加载为函数。我可以做你说的,但它没有所需的功能,因为它没有设置。任何帮助? – Colum

+0

看看错误消息'global name'render'is not defined'它表示它没有找到'render'的定义。顺便说一句,在你的评论中,你确定要通过做一个任务来重载'render'的定义吗? –

+0

我想让'render'注册为全局。如果我把索引类放在app.py文件中,这一切都可以正常工作,但只要我把它们分开,它就会中断。我需要知道一个解决方法,所以我可以从另一个文件调用render.index()。这可能是我不能? – Colum

1

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

index.py

import app 

然后:

return app.render.index(testing) 
1

你可以只包括您在app.py文件内的索引类(index.py)。导入Web模块然后将在代码的开始处引入函数“render”的定义。