Django:如何限制开放应用程序?

2024-09-28 20:55:18 发布

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

我在django项目上有几个应用程序:

DJANGO_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # 'django.contrib.gis.db',
    ]

LOCAL_APPS = [
    #'cycliste'                  ,
    #'logger'                    ,
    'position'                  ,
    'reseau'                    ,
    'station'                   ,
    #'trajet'                    ,
    #'useful_functions'          ,
    'velo'                      ,
    #'ville'                     ,
]

INSTALLED_APPS = DJANGO_APPS + LOCAL_APPS

我的url文件是:

urlpatterns = [

    url(r'^', include('reseau.urls')),
    url(r'^', include('station.urls')),
    url(r'^', include('velo.urls')),
    url(r'^', include('position.urls')),


]

现在,每个应用程序都是一个rest服务器。我想在集群的每个服务器上启动一个不同的应用程序。 我有两种方法:

  1. 我对服务器上不需要的本地应用程序进行注释
  2. 我更改了url文件,删除了我不想接受的url

问题是我有6到7个应用程序。对于它们中的每一个,我只希望能够启动一个“站”服务器,或“记录器”服务器。所以我需要在运行时动态更改本地应用程序中包含的应用程序

我试图通过一个--settings命令来完成,但没有成功。我试着通过一个特定的管理命令来做,但是没有成功。。。最后我觉得应该更简单一些。 也许对设置文件做个测试

如何动态更改已安装的应用程序值

如何动态更改urlpatterns值


Tags: apps文件django服务器应用程序urlincludelocal
1条回答
网友
1楼 · 发布于 2024-09-28 20:55:18

首先,我建议对每个“站”使用django-environ作为动态var。如果已将env应用于设置,请忽略此步骤:

import environ
env = environ.Env()

env_file = 'path/to/env/file.env'
if exists(env_file):
    environ.Env.read_env(str(env_file))

动态更改已安装的应用程序值:

1)启动应用程序时按开关更改设置:

python manage.py runserver settings=path.to.settings.production.station1

2)通过从env文件加载本地应用程序进行更改:

LOCAL_APPS = ['your', 'app', 'here']
INSTALLED_APPS = DJANGO_APPS + env.list('LOCAL_APPS', default=LOCAL_APPS)

动态更改urlpatterns值:

更改设置中的ROOT_URLCONF,改为从env获取:

# Define url config here
ROOT_URLCONF = env('ROOT_URLCONF', default='core.urls.development')

动态更改已安装的应用程序值:

相关问题 更多 >