在我使用mod_python进行python网站之前。不幸的是mod_python不再是最新的,所以我找了另一个框架并找到了mod_wsgi。
在mod_python中,可以使用索引方法和其他方法。我想要调用多个页面。 像这样:
def application(environ, start_response):
status = '200 OK'
output = 'Hello World!'
response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
def test(environ, start_response):
status = '200 OK'
output = 'Hello test!'
response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
mod_wsgi可以吗?
解: Flask框架可以满足我的需求
#!/usr/bin/python
from flask import Flask
from flask import request
app = Flask(__name__)
app.debug = True
@app.route("/")
def index():
return "Hello index"
@app.route("/about")#, methods=['POST', 'GET'])
def about():
content = "Hello about!!"
return content
if __name__ == "__main__":
app.run()
答案 0 :(得分:4)
WSGI是webapps的一般入口点,它说,在搜索mod_wsgi时你只找到hello world的原因是你正在搜索mod_wsgi而不是用于实现标准的框架。
这样看,wsgi有点像洋葱。 Web服务器将请求发送到您的callable。有2个参数:environ
和start_response
。据我所知,start_response是发送标题的函数,environ是存储所有参数的地方。
您可以滚动自己的框架或使用金字塔,烧瓶等内容。这些框架中的每一个都可以与wsgi绑定。
然后创建一个将处理请求的wsgi中间件。然后,您可以解析“PATH_INFO”以生成不同的callables。
def my_index(environ):
response_headers = [('Content-type', 'text/plain')]
return response_headers, environ['PATH_INFO']
def application(env, st):
response = None
data = None
if environ['PATH_INFO'] == '/index':
response, data = my_index(environ)
st('200 ok', response)
return [data]
这是一个相当简单的例子,然后在环境中你可以做任何你想做的事情。 wsgi本身并没有你可能习惯使用mod_python的东西。它实际上只是web服务器的python接口。
修改
正如其他人在评论中所说,如果你不知道自己在做什么,不要尝试自己动手。考虑使用其他框架并首先了解它。
例如,您需要编写一种将函数绑定到url的正确方法。正如我在我的例子中写的那样非常糟糕,但应该知道它是如何在后台完成的。您可以使用正则表达式来处理请求以提取ID或使用类似于遍历金字塔和zope的内容。
如果你真的坚持自己动手,请看一下webob教程。