同时适用于Django和Pylons的中间件

3 投票
2 回答
931 浏览
提问于 2025-04-15 13:05

我觉得Django和Pylons对中间件的工作方式有不同的看法。Pylons遵循了标准化的PEP 333,这点我很喜欢,但Django似乎更受欢迎,使用的人也更多。那有没有可能写出一种中间件,能在这两者中都能用呢?

这个中间件的项目是把一个叫ESAPI的安全工具包从Java移植到Python。因为Java非常注重标准,所以在框架上比较灵活,容易适应不同的情况。而在Python中,不同的框架对一些基本的东西,比如HttpRequest对象和中间件的工作方式,有着不同的理解,这让事情变得更加复杂。

显然,新用户不能发布超过一个链接。下面是关于Django和Pylons中间件信息的链接。

2 个回答

0

在Pylons中,中间件指的是WSGI(PEP 333)中间件,而在Django中则是指它自己内部的中间件机制。

不过,如果你在apache+mod_wsgi下运行Django(而不是使用比如mod_python或lighttpd+flup),你也可以在Django中使用WSGI中间件。不过通常情况下,这并不常见,因为WSGI中间件里很多功能在Django本身或Django的中间件中已经有了。

WSGI和Django中间件之间的差别其实不大,所以在这两者之间转换代码应该比较简单。更棘手的问题是当它们使用外部库,比如ORM的时候。

WSGI Wiki上有一个不错的WSGI中间件列表。

3

Pylons使用的是标准的WSGI中间件。如果你通过WSGI来部署Django,那么在这个时候你也可以使用WSGI中间件。不过,目前你不能通过Django设置文件中的标准MIDDLEWARE_CLASSES选项来使用WSGI中间件。

不过,现在有一个谷歌夏季代码项目正在进行,目的是让Django本身能够使用WSGI中间件。我没有关注这个项目的最新进展,但相关的代码可以在Http WSGI改进分支找到。

撰写回答