2016-03-19 11 views
2

Ich bin ein Anfänger Django Entwickler, also wenn diese Frage keinen Sinn macht bitte verzeihen Sie mir.Warum müssen wir WSGI_APPLICATION Variable in Django Einstellungen

Wir bieten eine Variable namens WSGI_APPLICATION in Django-Einstellungen zusammen mit ROOT_URLCONF und einige andere Einstellungen Variablen. und wir bieten Einstellungen Dateipfad in wsgi.py Datei als auch,

import os 
import django.core.wsgi import get_wsgi_application 
os.environ.setdefault("DJANGO_SETTINGSS_MODULE", "<settings_file_path>") 
application = get_wsgi_application() 

Sie sehen also, es ist ein Zwei-Wege-connection.right?

Ich meine Pfad der Einstellungsdatei in WSI-Datei und Pfad der WSGI-Datei in der Einstellungsdatei. also warum müssen wir das tun?

nach meinem Verständnis Pfad der Einstellungen Datei in Wsgi-Datei sollte gut genug sein, und wir brauchen diese zusätzliche Variable in Django-Einstellungen nicht?

letztlich ist die wsgi-Datei der Ausgangspunkt der Django-Anwendung, oder?

Bitte korrigieren Sie mich, wo auch immer ich falsch liege.

Antwort

1

Letztendlich ist die wsgi-Datei der Ausgangspunkt der Django-Anwendung, oder?

Nicht unbedingt. Die documentation for WSGI_APPLICATION erklärt, was diese Einstellung ist für:

Der vollständige Python-Pfad des WSGI Anwendung Objekt, das Django-internen Servern (z runserver) verwenden wird.

Jeder Server, den Sie einrichten, muss wissen, wo sich die WSGI-Datei befindet. Wenn Sie einen externen Server verwenden, wird er in seinen eigenen Einstellungen aussehen. Wenn Sie den Entwicklungsserver von Django verwenden, werden die Einstellungen von Django überprüft. Die Kreisförmigkeit, die Sie bemerkt haben, ist eine Folge der Tatsache, dass die Django-Anwendung auf verschiedene Arten gestartet werden kann.

+0

Was genau Sie meinen "Die Django-Anwendung kann auf verschiedene Arten gestartet werden." – user5319825

+1

@ user5319825: Verschiedene Webserver haben ihre eigene Art, WSGI zu konfigurieren und Django zu starten. Die Art und Weise, wie "runserver" funktioniert, ist die 'WSGI_APPLICATION' Einstellung, während Apache mit mod_wsgi, sagen wir, [hat eine eigene Konfiguration] (https://docs.djangoproject.com/en/dev/howto/deployment/ wsgi/modwsgi /). Sie können auch eine Django-Anwendung ohne WSGI oder einen Server verwenden, wenn Sie keine HTTP-Anfragen senden müssen. –

+0

"Sie können auch eine Django-Anwendung ohne WSGI oder einen Server verwenden, wenn Sie keine HTTP-Anfragen senden müssen." Wie? – user5319825

0

IMHO, spielt wsgi.py eine Rolle des Zeigens, wo dein django Projekt ist, für WAS wie Apache oder etwas anderes.

Daher beginnt wsgi.py außerhalb von Django, es braucht Django-Einstellungen.

Verwandte Themen