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

2024-04-19 04:09:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个django项目和几个应用程序。每个数据库都链接到不同的数据库,并且可能具有不同的设置。我将mod\u wsgi与apache结合使用。 实际上,我遵循的方法是here:读取一个.ini文件。你知道吗

如何加载设置.ini当用户尝试访问我的应用程序时特定于它?

我可以加载/读取特定的设置.ini在我的设置.py而且效果很好。我只想加载/读取设置.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
│   └── ...

我的特定设置文件在我的设置.py地址:

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

DEBUG = config['debug']['DEBUG']
TEMPLATE_DEBUG = config['debug']['TEMPLATE_DEBUG']
...

还有我的设置.ini看起来是这样的:

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

有什么建议吗?你知道吗


Tags: 文件项目djangopydebugconfig数据库应用程序
2条回答

你想做的听起来有点。。。关。我同意丹尼尔·罗斯曼的观点。如果你在寻求建议,听他的。但是,如果你想让它工作,这里有一个想法:你可以从一个mixin视图中调用settings.configure()

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

我没试过这个。。。因为这太疯狂了。你知道吗

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

相关问题 更多 >