2011-07-25 7 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から来て、最終的にわからない)render page.indexというmoucleから。どうすればこの問題を回避できますか?

+0

'import pages'を使う必要はありませんか?どちらがページフォルダを探しますか?あなたが何をしようとしているかの例については、https://github.com/alexksikes/mailer/blob/master/application.pyを参照してください。 – KyleWpppd

答えて

1

index.pyページには、from web.template import renderを含める必要がありますか? web.template.render()を仮定

+0

私の理解から、 'render = web.template.render(' templates/'、base = "layout")'はファイルを関数として読み込みます。私はあなたが言ったことをすることができますが、それはセットアップされていないので、働くために必要な機能を持っていません。どんな助け? – Colum

+0

'グローバル名 'render' not not defined 'というエラーメッセージを見てください。' render'の定義が見つかりません。ところで、あなたのコメントでは、割り当てを実行して 'render'の定義をオーバーロードしてもよろしいですか? –

+0

私はグローバルとして登録された 'レンダリング'を取得しようとしています。 app.pyファイルにインデックスクラスを置くと、すべて動作しますが、2つを分離するとすぐにインデックスクラスが破損します。私はこれを回避する方法を知る必要があるので、render.index()を別のファイルから呼び出すことができます。私はできないかもしれないかもしれない? – Colum

1

index()メソッドを含むオブジェクトを返します(私はweb.pyに慣れていないよ)、あなたはどこにこのオブジェクトを見つけるためにはPythonに伝える必要があります。 index.py

:次に

import app 

return app.render.index(testing) 
1

あなたは自分のapp.pyファイル内で、あなたにインデックスクラス(index.py)を含めることができます。 Webモジュールをインポートすると、コードの先頭に関数 "render"の定義が反映されます。

関連する問題