官方文档有点混乱:'之前'和'之后'用于在元组中订购MiddleWare,但在某些地方'之前'和'之后'指的是请求 - 响应阶段.此外,'应该是第一个/最后一个'是混合的,并且不清楚哪个用作"第一个".
我确实理解了它的不同......然而,对于Django的新手而言似乎很复杂.
你能为内置的MiddleWare课程建议一些正确的顺序(假设我们启用了所有这些课程),并且 - 最重要的是 - 解释为什么在其他课程之前/之后?
这是列表,其中包含我设法找到的文档中的信息:
UpdateCacheMiddleware
SessionMiddleware,GZipMiddleware,LocaleMiddlewareGZipMiddleware
UpdateCacheMiddleware:修改'变化:'ConditionalGetMiddleware
CommonMiddleware:使用其'Etag:'标题时USE_ETAGS=TrueSessionMiddleware
UpdateCacheMiddleware:修改'变化:'TransactionMiddleware:我们不需要这里的交易LocaleMiddleware,SessionMiddleware,CacheMiddleware之后的最顶级之一
UpdateCacheMiddleware:修改'变化:'SessionMiddleware:使用会话数据CommonMiddleware
GZipMiddleware,它不会计算gzip压缩内容的电子标签APPEND_SLASH或时它重定向PREPEND_WWWCsrfViewMiddleware
AuthenticationMiddleware
SessionMiddleware:使用会话存储MessageMiddleware
SessionMiddleware:可以使用基于会话的存储XViewMiddlewareTransactionMiddleware
SessionMiddleware配置为使用DB)*CacheMiddleWare不受影响(作为例外:使用自己的数据库游标)FetchFromCacheMiddleware
AuthenticationMiddleware就可以使用了CACHE_MIDDLEWARE_ANONYMOUS_ONLYFlatpageFallbackMiddleware
TransactionMiddleware (是吗?) …我在PostgreSQL上有一个会话(SQLAlchemy),有一个活动的未提交事务.我刚刚将会话传递给某个调用树,该树可能通过或直接通过底层连接发出SQL INSERT/ UPDATE/ DELETE语句sqlalchemy.orm.
有没有办法检查此事务中是否有任何待处理的数据修改语句?即,提交是否是无操作,以及回滚是否会丢弃某些东西?
我见过人们v$transaction在Oracle中指出同样的事情(参见这个问题).我正在寻找类似于在PostgreSQL上使用的东西.
我的Django应用程序使用Django的标准WSGIHandler在Apache下部署在mod_wsgi中,通过Django端的表单登录对用户进行身份验证.所以对于Apache来说,用户是匿名的.这使得Apache访问日志不那么有用.
有没有办法在处理请求后将用户名通过WSGI包装器传回Apache,以便它出现在Apache访问日志中?
(版本:Django 1.1.1,mod_wsgi 2.5,Apache 2.2.9)
如何在没有过滤和没有聚合(sum()等等)的非空序列上产生迭代器,什么都不产生?
考虑一个简单的例子:
sequence = ['a', 'b', 'c']
list((el, ord(el)) for el in sequence)
Run Code Online (Sandbox Code Playgroud)
这[('a', 97), ('b', 98), ('c', 99)]按预期产生.
现在,只需将ord(el)out 换成一个表达式,该表达式使用某个生成器的第一个值(...).next()- 原谅人为的例子:
def odd_integers_up_to_length(str):
return (x for x in xrange(len(str)) if x%2==1)
list((el, odd_integers_up_to_length(el).next()) for el in sequence)
Run Code Online (Sandbox Code Playgroud)
这产生了[].是的,空单.没有('a',东西)元组.没有.
但我们不是过滤,聚合或减少.n没有过滤或聚合的对象上的生成器表达式必须产生n对象,对吗?这是怎么回事?
django ×2
python ×2
apache ×1
generator ×1
iterator ×1
mod-wsgi ×1
postgresql ×1
sqlalchemy ×1
transactions ×1