Python 当用户尝试访问应用程序时加载特定设置(多应用程序django)

Python 当用户尝试访问应用程序时加载特定设置(多应用程序django),python,django,settings,Python,Django,Settings,我有一个django项目和几个应用程序。每个数据库都链接到不同的数据库,并且可能具有不同的设置。我在apache中使用mod_wsgi。 实际上,我遵循的是找到的方法之一:读取一个.ini文件 当用户尝试访问我的应用程序时,如何加载该应用程序特有的settings.ini? 我可以在我的settings.py中加载/读取特定的settings.ini,它工作正常。我只想加载/读取用户请求的应用程序的settings.ini 如何知道应用程序提供正确的加载路径?(通过URL?) 请参见我的简化项目

我有一个django项目和几个应用程序。每个数据库都链接到不同的数据库,并且可能具有不同的设置。我在apache中使用mod_wsgi。 实际上,我遵循的是找到的方法之一:读取一个.ini文件

当用户尝试访问我的应用程序时,如何加载该应用程序特有的settings.ini?

我可以在我的settings.py中加载/读取特定的settings.ini,它工作正常。我只想加载/读取用户请求的应用程序的settings.ini

如何知道应用程序提供正确的加载路径?(通过URL?)

请参见我的简化项目树:

├── django.wsgi
├── manage.py
├── global
│   ├── __init__.py
│   ├── settings.py
│   ├── wsgi.py
├── my_app1
│   ├── admin.py
│   ├── __init__.py
│   ├── models.py
│   ├── settings.ini
│   └── ...
├── my_app2
│   ├── admin.py
│   ├── __init__.py
│   ├── models.py
│   ├── settings.ini
│   └── ...
在My setting.py的顶部读取我的特定设置文件:

import configparser
config = configparser.ConfigParser()
config.read('/path/to/my/settings.ini')

DEBUG = config['debug']['DEBUG']
TEMPLATE_DEBUG = config['debug']['TEMPLATE_DEBUG']
...
我的settings.ini如下所示:

[debug]
DEBUG = True
TEMPLATE_DEBUG = DEBUG
...

有什么建议吗

应用程序没有也不能有单独的设置。如果您需要这样做(我必须说这听起来是个坏主意),您将需要单独的项目,每个项目都有自己的settings.py,并且每个项目都由Apache中自己的虚拟服务器提供服务。

您试图做的事情听起来有点。。。关我同意丹尼尔·罗斯曼的观点。如果你在寻求建议,听他的。但是如果你想让这一切顺利进行,这里有一个想法:你可以通过一个mixin从一个视图中实现这一点,该mixin调用:


我还没试过这个。。。因为这太疯狂了。

如果您想使用多个数据库,请尝试此功能,谢谢。我已经看过这一页了。我认为数据库路由器可能就足够了,但我更喜欢了解更广泛的机会。我们知道这不是我们应该做的事情。。。我们已经和我的团队讨论过了,我想我们会听从丹尼尔·罗斯曼的建议。谢谢你的回答。我们知道这不是我们应该做的。。。我们已经和我的团队讨论过了,我想我们会听从你的建议。谢谢
from os
from django.conf import settings
import configparser

class DynamicSettingsViewMixin(object):

    def dispatch(self, request, *args, **kwargs):
        config = configparser.ConfigParser()
        config.read(os.path.join(os.path.dirname(__file__), 'settings.ini'))

        settings.configure(**config['debug'])

        return super(DynamicSettingsViewMixin, self).dispatch(request, *args, **kwargs)

class MyAwesomeAppView(DynamicSettingsViewMixin, TemplateView):
    pass