如何使用 web.py 将参数传递给页面 class?
How to pass arguments to a page class with web.py?
我的程序中有几个 classes。
名为 WebServer 的主要一个创建 web.py 应用程序本身,并为网页调用其他 classes。例如,我可以将 self.var1
传递给搜索 class __init__
吗?因为我想到的只是在index
class中创建一个方法,比如set_var1
之类的,然后我不知道如何访问这个class的具体实例Web 应用程序创建。
class:
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()
不是,不是。 search
和 index
的特定实例由 web.py
创建以响应传入请求。有更好/更简单的方法。
此外,将此初始化放在 WebServer class 中虽然可能,但这并不是使用 web.py
进行初始化的常用方法。 class 不需要这样做:它是一个单例文件,这个文件本质上是一个启动/配置文件。
要让您的 "response" classes(搜索、索引等)可以使用应用程序范围的信息,请将该信息设为全局信息,或将其挂接到 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()
我的程序中有几个 classes。
名为 WebServer 的主要一个创建 web.py 应用程序本身,并为网页调用其他 classes。例如,我可以将 self.var1
传递给搜索 class __init__
吗?因为我想到的只是在index
class中创建一个方法,比如set_var1
之类的,然后我不知道如何访问这个class的具体实例Web 应用程序创建。
class:
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()
不是,不是。 search
和 index
的特定实例由 web.py
创建以响应传入请求。有更好/更简单的方法。
此外,将此初始化放在 WebServer class 中虽然可能,但这并不是使用 web.py
进行初始化的常用方法。 class 不需要这样做:它是一个单例文件,这个文件本质上是一个启动/配置文件。
要让您的 "response" classes(搜索、索引等)可以使用应用程序范围的信息,请将该信息设为全局信息,或将其挂接到 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()