【问题标题】:Middleware for both Django and PylonsDjango 和 Pylons 的中间件
【发布时间】:2009-07-22 20:06:26
【问题描述】:

在我看来,Django 和 Pylons 对于中间件应该如何工作有不同的想法。我喜欢 Pylons 遵循标准化的 PEP 333,但 Django 似乎得到了更广泛的采用。是否可以编写两者都使用的中间件?

涉及上述中间件的项目正在将一个名为 ESAPI 的安全工具包从 Java 移植到 Python。因为 Java 如此面向标准,所以很容易与框架无关。在 Python 中,不同的框架对 HttpRequest 对象和中间件等基本事物的工作方式有不同的想法,因此这似乎更加困难。

显然,新用户不能发布多个超链接。请参阅下面的 Django 和 Pylons 中间件信息的链接。

【问题讨论】:

标签: python django pylons middleware


【解决方案1】:

Pylons 使用标准的 WSGI 中间件。如果你通过 WSGI 部署 Django,你也可以使用 WSGI 中间件。但是,您目前不能通过 settings.py 中的标准 Django MIDDLEWARE_CLASSES 选项使用 WSGI 中间件。

也就是说,目前有一个 Google Summer of Code 项目可以在 Django 本身中使用 WSGI 中间件。我没有关注这个项目的状态,但是代码在Http WSGI improvements branch.

【讨论】:

    【解决方案2】:

    对于 Pylons,术语中间件是指 WSGI (PEP 333) 中间件,而 Django 是指它自己的中间件内部机制。

    但是,如果您在 apache+mod_wsgi(而不是例如 mod_python 或 lighttpd+flup)下运行 Django,您还可以在 Django 中包含 WSGI 中间件。但通常不会这样做,因为您会在 WSGI 中间件中找到的大部分功能已经内置到 Django 本身或 Django 中间件中。

    WSGI 和 Django 中间件之间的差异很小,应该很容易在两者之间转换代码。更棘手的问题是当他们使用 ORM 等外部库时。

    WSGI Wiki 有一个很好的WSGI middleware 列表。

    【讨论】:

    • Daniel 打败了我,但我应该澄清他是正确的,你不能在 MIDDLEWARE_CLASSES 中使用 WSGI 中间件。我在 Django 中使用 WSGI 中间件的意思是将其添加到您的 mod_wsgi WSGIScriptAlias 脚本中。
    猜你喜欢
    • 2011-02-28
    • 2011-02-15
    • 2011-03-06
    • 1970-01-01
    • 2011-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-12
    相关资源
    最近更新 更多