3

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

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

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

4

2 回答 2

3

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

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

于 2009-07-22T20:45:09.413 回答
0

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

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

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

WSGI Wiki有一个很好的WSGI中间件列表。

于 2009-07-22T20:45:29.540 回答