我试图让url输入为(某种url)/ page /(我们想要的模板的页码)。我遇到了麻烦,我不确定是什么问题。我的代码的第一部分如下:
from wsgiref.simple_server import make_server
from wsgiref.util import setup_testing_defaults
routing_table = {}
def route(url, func):
routing_table[url] = func
def find_path(url):
if url in routing_table:
return routing_table[url]
else:
return None
def app(environ, start_response):
setup_testing_defaults(environ)
handler = find_path(environ['PATH_INFO'])
if handler is None:
status = '404 Not Found'
body = "<html><body><h1>Page Not Found</h1></body></html>"
else:
status = '200 OK'
body = handler()
headers = [('Content-type', 'text/html: charset=utf-8')]
start_response(status, headers)
return [body.encode("utf-8")]
def run(ip, port):
myserver = make_server(ip, port, app)
print("Serving testings of wsgi at http://%s:%s" % (ip, port))
myserver.serve_forever()
代码的下一部分是我认为主要问题发生在页面(page_id):
import test
import re
def index():
return "This is the main page"
def hello():
return "Hi, how are you?"
def page(page_id):
return "This is page number: %d" % page_id
if __name__ == '__main__':
test.route("/", index)
test.route("/Hello", hello)
test.route('/page/<page_id>', page)
test.run("127.0.0.1", 8000)
我的想法是我们需要导入模板,并在模板中定义逻辑。但是,当我尝试这样做时,我无法从python导入模板&#34;并利用模板(myTemplates.tpl)。我相信我的语法可能不正确,但到目前为止,python.org没有显示任何建议。
答案 0 :(得分:1)
在find_path
中,您只是将给定字符串与路由表中的一个URL进行比较
if url in routing_table:
因此,'/page/<page_id>'
路线实际可以覆盖的唯一页面是文字'/page/<page_id>'
。
您需要做的是解析URL以查看它是否与您传入的格式匹配,而不是比较静态字符串。有道理吗?
在这种情况下,您可能需要查看正则表达式:https://docs.python.org/2/library/re.html