2016-03-19 54 views
2

我是一個初學Django開發者,所以如果這個問題沒有意義,請原諒我。爲什麼我們必須在Django設置中提供WSGI_APPLICATION變量

我們在django設置中提供了一個名爲WSGI_APPLICATION的變量以及ROOT_URLCONF和其他一些設置變量。我們在wsgi.py文件中也提供設置文件路徑,

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

所以你看,它是一個雙向connection.right?

我的意思是wsgi文件中設置文件的路徑和設置文件中wsgi文件的路徑。所以爲什麼我們必須這樣做。

根據我的理解wsgi文件中的設置文件的路徑應該足夠好,我們不需要django設置中的額外變量?

最終wsgi文件是django應用程序的起點,對嗎?

無論我錯在哪裏,請糾正我。

回答

1

最終,wsgi文件是django應用程序的起點,對嗎?

不一定。該documentation for WSGI_APPLICATION解釋了這個設置是:

是Django的內置的服務器(例如runserver)將使用WSGI應用對象的完整的Python路徑。

您設置的任何服務器都必須知道WSGI文件的位置。如果您使用的是外部服務器,它會查看自己的設置。如果您使用的是Django的開發服務器,它將檢查Django的設置。因此,您注意到的循環是Django應用程序可以以多種不同方式啓動的結果。

+0

「你可以用多種不同的方式啓動Django應用程序」。 – user5319825

+1

@ user5319825:不同的Web服務器都會有各自的配置WSGI和啓動Django的方式。 'runserver'的方式是通過查看'WSGI_APPLICATION'設置來實現的,而使用mod_wsgi的Apache,例如[有它自己的配置](https://docs.djangoproject.com/en/dev/howto/deployment/ WSGI/modwsgi /)。如果您不需要提供HTTP請求,也可以使用不帶WSGI或服務器的Django應用程序。 –

+0

「如果您不需要提供HTTP請求,您也可以使用沒有WSGI或服務器的Django應用程序」如何? – user5319825

0

恕我直言,wsgi.py扮演一個角色,指出你的django項目在哪裏,像Apache或其他東西的WAS。

因此wsgi.py從django開始,它需要django設置。

相關問題