- ·上一篇文章:Django 集成的子框架
- ·下一篇文章:Django 集成已有的数据库和应用
Django 中间件
st.META['REMOTE_ADDR'] 。在站点位于某个反向代理之后的、每个request的REMOTE_ADDR 都被指向 127.0.0.1 的情形下,这一功能将非常有用。 It sets request.META['REMOTE_ADDR']based on request.META['HTTP_X_FORWARDED_FOR'] , if the latter is set. This is useful if you’re sitting behind a reverse proxy that causes each request’s REMOTE_ADDR to be set to 127.0.0.1 .红色警告!这个middleware并 不 验证 HTTP_X_FORWARDED_FOR 的合法性。如果站点并不位于自动设置 HTTP_X_FORWARDED_FOR 的反向代理之后,请不要使用这个中间件。 否则,因为任何人都能够伪造 HTTP_X_FORWARDED_FOR 值,而 REMOTE_ADDR 又是依据 HTTP_X_FORWARDED_FOR 来设置,这就意味着任何人都能够伪造IP地址。只有当能够绝对信任 HTTP_X_FORWARDED_FOR 值得时候才能够使用这个中间件。会话支持中间件Middleware class: django.contrib.sessions.middleware.SessionMiddleware .这个中间件激活会话支持功能. 细节请参见第12章。 See Chapter 14 for details.站点缓存中间件Middleware classes: django.middleware.cache.UpdateCacheMiddleware anddjango.middleware.cache.FetchFromCacheMiddleware .这些中间件互相配合以缓存每个基于Django的页面。 已在第13章中详细讨论。事务处理中间件Middleware class: django.middleware.transaction.TransactionMiddleware .这个中间件将数据库的 COMMIT 或 ROLLBACK 绑定到request/response处理阶段。 如果view函数成功执行,则发出 COMMIT 指令。 如果view函数抛出异常,则发出 ROLLBACK 指令。这个中间件在栈中的顺序非常重要。 其外层的中间件模块运行在Django缺省的 保存-提交 行为模式下。 而其内层中间件(在栈中的其后位置出现)将置于与view函数一致的事务机制的控制下。关于数据库事务处理的更多信息,请参见附录C。
Django 中间件