python网页mod_wsgi
作者:互联网
在将mod_python用于python网站之前.不幸的是mod_python不再是最新的,所以我寻找了另一个框架并找到了mod_wsgi.
在mod_python中,可能有一个index方法以及其他方法.我希望有多个页面被调用.
像这样:
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()
解决方法:
WSGI是Web应用程序的通用入口点,也就是说,在搜索mod_wsgi时只发现世界的原因是,您正在搜索的是mod_wsgi而不是实现标准的框架.
如此看来,wsgi有点像洋葱.网络服务器将请求发送给您的可通话对象.具有2个参数:environ和start_response.据我所知,start_response是将发送标头的函数,而环境是存储所有参数的位置.
您可以滚动自己的框架,也可以使用诸如金字塔,长颈瓶之类的东西.这些框架中的每一个都可以与wsgi绑定.
然后,您创建一个处理请求的wsgi中间件.然后,您可以将“ PATH_INFO”解析为不同的可调用对象.
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教程.
http://docs.webob.org/en/latest/do-it-yourself.html
标签:mod-python,mod-wsgi,python 来源: https://codeday.me/bug/20191101/1981439.html