如何使用web.py将参数传递给页面类?

时间:2017-03-14 09:19:35

标签: python web.py

我的课程中有几个课程。 名为WebServer的主要创建web.py应用程序本身,并调用其他类的网页。我可以将self.var1传递给搜索类__init__吗?因为我想在index类中创建一个方法,如set_var1或类似的东西,所以我不知道如何访问Web应用程序创建的这个类的特定实例。

班级:

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()

1 个答案:

答案 0 :(得分:0)

不是,不。 searchindex的特定实例由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()