2017-03-14 7 views
0

私のプログラムにはいくつかのクラスがあります。 WebServerと呼ばれる主要なものは、web.pyアプリケーション自体を作成し、Webページの他のクラスを呼び出します。 self.var1などを検索クラス__init__に渡すことはできますか? set_var1などのようなindexクラスのメソッドを作成することを考えたので、Webアプリケーションが作成するこのクラスの特定のインスタンスにアクセスする方法がわかりません。web.pyでページクラスに引数を渡すには?

クラス:本当に

import sys 
import os 
import web 
from pages.search import search 
from pages.index import index 


class WebServer: 
    def __init__(self): 
     self.var1 = "test" 

     self.urls = (
      '/', 'index', 
      '/search', 'search' 
     ) 

     self.app = web.application(self.urls, globals()) 
     self.app.run() 

if __name__ == "__main__": 
    w = WebServer() 

答えて

0

ない、ありません。 searchおよびindexという特定のインスタンスは、着信要求に応じてweb.pyによって作成されます。より良い/より簡単な方法があります。

また、可能であればこの初期化をWebServerクラスに入れることは、web.pyで行う初期の方法ではありません。クラスでこれを行う必要はありません。シングルトンであり、このファイルは基本的にスタートアップ/設定ファイルです。

"応答"クラス(検索、インデックスなど)でアプリケーション全体の情報を利用できるようにするには、その情報をグローバルにするか、web.configというWeb.Storage()にフックします。例:

app = web.application(urs, globals()) 
web.config.update({"var1" : "test"}) 
app.run() 

これはあなたの回答に使用できます。例:

class search(object): 
    def GET(self): 
     if web.config.var1 == 'test': 
      return do_test_search() 
     return do_regular_search() 
+0

いいえ、あなたは 'web.ctx'にそのようなものを置かないでください。これは、要求コンテキストに関連するデータを格納することを意味します。これを格納する場所は 'web.config'です。 –

+0

ありがとうございます、私の答えを更新します。 – pbuck

+0

もう1つ。 'web.config'は' ThreadedDict'ではありません。 –

関連する問題