2016-03-19 55 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设置。

相关问题