我正在使用 appengine webapp 框架(链接)。是否可以添加 Django 中间件?我找不到任何例子。我目前正在尝试让 FirePython 中间件工作(链接)。
3 回答
这很简单:您按照正常方式创建 WSGI 应用程序,然后在执行之前将该应用程序包装在您的 WSGI 中间件中。
请参阅Bloog 中的此代码,了解如何将 firepython 添加为中间件。
GAE webapp 框架不会一对一地映射到 Django 框架。如果不自己实现某种适配器,就很难做你想做的事,我不知道有任何第三方处理程序适配器可以做到这一点。
也就是说,我通常使用 app-engine-patch,因此我可以将最新的 1.0.2 Django 版本与 AppEngine 一起使用,然后您可以将 Django 中间件以正常方式包含在 setup.py 文件中。如果需要,您可能可以查看 app-engine-patch 的适配器以了解它们是如何做到的,然后将其作为框架开始。
Django 理解的“中间件”是一种请求/响应处理器,与 WSGI 所说的“中间件”完全不同。想一想:类 django 的中间件会session
根据 Beaker(WSGI 中间件)放入的内容为请求对象添加属性environ['beaker.session']
。虽然将 WSGI 中间件添加到堆栈应该很简单(您已经在 WSGI 级别上工作main.py
),但添加请求/响应处理器取决于如何从 WSGI 抽象请求和响应。
Werkzeug 的 wiki及其contrib 模块之一中描述了如何使用Werkzeug(这是基本的 WSGI 工具集)来完成此操作。