编程语言
首页 > 编程语言> > python网页mod_wsgi

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