【发布时间】:2011-09-05 06:18:16
【问题描述】:
我正在从一个 django 实例运行多个站点,并希望该框架最终能够为来自一个或多个安装的数百个站点提供服务。
我需要根据当前请求修补一些 django 设置。我已经编写了一些中间件来修改设置,但是我需要在调用中间件之前修补这些设置,因为其他应用程序没有接受猴子修补的更改(即应用程序运行然后中间件运行所以应用程序不'不要使用猴子补丁设置)。
我还应该补充一下,这主要是为了让我没有编写的第三方应用程序受益,所以我不想到处添加装饰器或类似的东西,因为那会打乱我的升级路径。
所以:
- 如何访问应用的 init.py 文件中的当前请求?
- 应用程序的 init.py 是每次请求调用一次还是只调用一次?如果只有一次,我还能怎么做,以便我可以在每个请求中操作一次设置?
- 进行这种猴子修补安全吗?我知道这会使代码更加不透明,但我不想为每个站点使用不同的 wsgi 文件,因为我希望允许用户编辑其中一些设置并让我的猴子补丁来自数据库。
- 是否有更好的解决方案允许将某些设置存储在数据库中?
【问题讨论】:
-
为什么不从数据库生成 WSGI 文件?这对我来说似乎更理智。
-
有趣。但我在想,就可扩展性而言,如果整个应用程序与站点无关,这样我就可以配置一个新服务器,部署我的代码,每个服务器只会为它收到请求的任何站点提供页面。跨度>
-
当你说猴子补丁时,你是在修改中间件中的
django.conf.settings吗?
标签: django