Django 让mod_geoip与apache2.2.17中的mod_wsgi一起工作

Django 让mod_geoip与apache2.2.17中的mod_wsgi一起工作,django,wsgi,geoip,Django,Wsgi,Geoip,我想从在mod_wsgi上以守护程序模式运行的Django中访问GEOIP_COUNTRY_code环境变量。问题是,我可以从服务器上运行的PHP脚本中看到变量,但它似乎没有通过WSGI传递到我的Django站点。 request.META.get('GEOIP\u COUNTRY\u code')不起作用。 mod_wsgi中的其他环境变量是否有类似于WSGIPassAuthorization的功能?如果扩展模块将该变量设置为环境变量,则可以通过以下方式访问该变量: import os val

我想从在mod_wsgi上以守护程序模式运行的Django中访问
GEOIP_COUNTRY_code
环境变量。问题是,我可以从服务器上运行的PHP脚本中看到变量,但它似乎没有通过WSGI传递到我的Django站点。
request.META.get('GEOIP\u COUNTRY\u code')
不起作用。
mod_wsgi中的其他环境变量是否有类似于
WSGIPassAuthorization
的功能?

如果扩展模块将该变量设置为环境变量,则可以通过以下方式访问该变量:

import os
value = os.environ['GEOIP_COUNTRY_CODE']
也就是说,就像任何其他环境变量一样


更新1:

如果设置在Apache模块内部,例如mod_geoip,则将其传输到WSGI应用程序领域的唯一方法是在Apache请求结构的req.subprocess_env中设置它。即,与Apache使用SetEnv指令相同。在这种情况下,它应该出现在传递给WSGI应用程序的WSGI环境字典中

要尝试验证是否发生了这种情况,请使用WSGI echo测试脚本,如所示:


您首先在哪里设置地理IP\u国家代码?如果不知道在哪里/如何设置,你就无法回答这个问题。AFAICT是由Apache2内部的mod_geoip设置的。我也试过了,但是os.environ dict中不包括
geoip_COUNTRY_code
。似乎从Django 1.3开始,WSGi environo dict被合并到request.META中,所以现在我可以轻松地调用request.META.get(“GEOIP国家代码”)为了得到我想要的值。我怀疑合并只适用于Django 1.3。您总是能够通过Django请求对象访问WSGI环境字典,我非常怀疑他们会改变这一方式,因为它会打破许多使用现有方式的做法。