2009-07-22 9 views
3

Es scheint mir, dass Django und Pylons unterschiedliche Ideen haben, wie Middleware funktionieren sollte. Ich mag, dass Pylons den standardisierten PEP 333 folgt, aber Django scheint eine größere Verbreitung zu haben. Ist es möglich Middleware zu schreiben, um in beiden verwendet zu werden?Middleware für Django und Pylons

Das Projekt, das diese Middleware beteiligt, ist die Portierung eines Sicherheits-Toolkits namens ESAPI von Java nach Python. Da Java so standardorientiert ist, ist es ziemlich einfach, Framework-agnostisch zu sein. In Python haben verschiedene Frameworks unterschiedliche Ideen, wie grundlegende Dinge wie HttpRequest-Objekte und Middleware funktionieren, daher scheint dies schwieriger zu sein.

Anscheinend können neue Benutzer nicht mehr als einen Hyperlink buchen. Siehe unten für Links zu Django und Pylons Middleware Info.

+0

[Django Middleware] (http://docs.djangoproject.com/de/dev/topics/http/middleware/#topics-http-middleware) [Pylons Middleware] (http://pylonshq.com/docs /en/0.9.7/concepts/#id1) –

Antwort

3

Pylons verwendet Standard-WSGI-Middleware. Wenn Sie Django über WSGI bereitstellen, können Sie zu diesem Zeitpunkt auch die WSGI-Middleware verwenden. Sie können die WSGI-Middleware jedoch nicht über die Standardoption Django MIDDLEWARE_CLASSES in settings.py verwenden.

Das heißt, es ist derzeit ein Google Summer of Code Projekt die Verwendung von WSGI Middleware in Django selbst zu ermöglichen. Ich habe den Status dieses Projekts nicht verfolgt, aber der Code ist im Http WSGI improvements branch verfügbar.

0

Für Pylons bedeutet der Begriff Middleware WSGI (PEP 333) Middleware, während Django einen eigenen internen Mechanismus für Middleware bedeutet.

Wenn Sie jedoch Django unter Apache + mod_wsgi (anstelle von z. B. mod_python oder lighttpd + flup) ausführen, können Sie auch WSGI-Middleware in Django hinzufügen. Dies ist jedoch normalerweise nicht der Fall, da ein Großteil der Funktionalität, die Sie in der WSGI-Middleware finden, bereits in Django-eigene oder Django-Middleware integriert ist.

Die Unterschiede zwischen WSGI und Django-Middleware sind klein genug, dass es einfach genug sein sollte Code zwischen den beiden zu konvertieren. Das schwierigere Problem ist, wenn sie externe Bibliotheken wie ORM verwenden.

Die WSGI Wiki hat eine gute Liste der WSGI middleware.

+0

Daniel hat mich dazu gebracht, aber ich sollte klarstellen, dass er korrekt ist, Sie können WSGI Middleware nicht in MIDDLEWARE_CLASSES verwenden. Was ich damit meine, WSGI-Middleware mit Django zu verwenden, ist, sie in Ihr WSGIScriptAlias-Skript mod_wsgi einzufügen. –

Verwandte Themen