2017-11-29 5 views
0

Ich habe mehrere Apps auf meinem django Projekt:Django: Wie man die geöffnete APP begrenzt?

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 

Meine URL-Datei ist:

urlpatterns = [ 

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


] 

nun jede App ist ein Rest-Server. Ich möchte auf jedem Server meines Clusters eine andere App starten. Ich sehe zwei Möglichkeiten, das zu tun:

  1. ich kommentieren Sie die LOCAL_APPS ich auf dem Server nicht
  2. ich die Urls Datei ändern wollen, die URL zu entfernen will ich nicht
akzeptieren

Das Problem ist, dass ich 6 oder 7 Apps habe. Für jeden von ihnen möchte ich nur einen "Station" -Server oder einen "Logger" -Server starten können. Also muss ich dynamisch ändern, welche App zur Laufzeit in LOCAL_APPS enthalten ist.

Ich versuchte es durch einen --settings Befehl, aber hatte kein Glück. Ich habe versucht, es durch eine bestimmte Verwaltung zu tun, aber ohne Erfolg ... Schließlich denke ich, dass es einfacher sein sollte. Vielleicht ein Test der Einstellungsdatei?

Wie kann ich den INSTALLED_APPS-Wert dynamisch ändern?

Wie kann ich den Wert urlpatterns dynamisch ändern?

+0

Lesen aus einer Umgebungsvariablen? –

Antwort

0

Zuerst empfehle ich die Verwendung django-environ für dynamisch var auf jeder "Station". Ignorieren Sie diesen Schritt, wenn Sie bereits env, um Ihre Einstellungen anzuwenden sind:

import environ 
env = environ.Env() 

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

dynamisch den INSTALLED_APPS Wert ändern:

1) Ändern von Schalterstellungen, wenn Ihre Anwendung starten:

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

2) Änderung durch Laden von LOCAL_APPS aus env Datei:

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

dynamisch den urlpatterns Wert ändern:

ändern ROOT_URLCONF in Ihren Einstellungen von env erhalten statt:

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

dynamisch den INSTALLED_APPS Wert ändern:

Verwandte Themen