python网页mod_wsgi

标签 python mod-wsgi mod-python

在我为 python 网站使用 mod_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()

最佳答案

WSGI 是 web 应用程序的通用入口点,也就是说,您在搜索 mod_wsgi 时只找到 hello world 的原因是您正在搜索 mod_wsgi 而不是实现标准的框架。

这样看,wsgi有点像洋葱。网络服务器将请求发送到您的可调用对象。有 2 个参数:environstart_response。据我所知,start_response 是将发送您的 header 的函数,environ 是存储所有参数的地方。

您可以推出自己的框架或使用 pyramid、flask 等。这些框架中的每一个都可以与 wsgi 绑定(bind)。

然后您创建一个 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]

这是一个相当简单的例子,但是有了 environ,你可以做任何你想做的事。就其本身而言,wsgi 不会做任何您可能已经习惯使用 mod_python 的事情。它实际上只是用于网络服务器的 python 接口(interface)。

编辑

正如评论中的其他人所说,如果您对自己在做什么一无所知,请不要尝试自己动手。考虑使用其他框架并先详细了解它。

例如,您需要编写一种将函数绑定(bind)到 url 的正确方法。正如我在示例中所写的那样,它非常糟糕,但应该说明它是如何在后台完成的。您可以使用正则表达式处理请求以提取 ID,或使用类似于金字塔和 zope 遍历的方法。

如果你真的坚持自己动手,看看 webob 教程。

http://docs.webob.org/en/latest/do-it-yourself.html

关于python网页mod_wsgi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11258326/

相关文章:

Python 不能修改 MySQL 但用户可以

python - 使用列表推导调用函数列表

django - WSGI 加载错误项目的设置 : how to debug?

python - 如何修改 .htaccess 中的 sys.path 以允许 mod_python 看到 Django?

python - 如何在 Django 表单中使用外键过滤选择值

python - 通过列表引用类实例

带有 --enable-shared : will not build any extensions 的 Python 3.1.1

django - mod_wsgi 和多个项目

python - 我将 djang1.3.1 更新为 djang1.4 ,错误 : MOD_PYTHON ERROR

mod-python - 访问控制允许来源 : * not working?