为什么我们必须在Django设置中提供WSGI_APPLICATION变量

时间:2016-03-19 19:08:25

标签: python django django-settings django-wsgi

我是Django的初学者,所以如果这个问题没有意义,请原谅我。

我们在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()

所以你看,它是一个双向连接。直接?

我指的是wsgi文件中的设置文件路径和设置文件中wsgi文件的路径。那么我们为什么要这样做呢。

根据我的理解,wsgi文件中的设置文件路径应该足够好,我们在django设置中不需要额外的变量吗?

最终wsgi文件是django应用程序的起点,对吗?

如果我错了,请纠正我。

2 个答案:

答案 0 :(得分:4)

最终wsgi文件是django应用程序的起点,对吗?

不一定。 documentation for WSGI_APPLICATION解释了此设置的用途:

  

Django的内置服务器(例如runserver)将使用的WSGI应用程序对象的完整Python路径。

您设置的任何服务器都必须知道WSGI文件的位置。如果您使用的是外部服务器,它将查看自己的设置。如果您正在使用Django的开发服务器,它将检查Django的设置。因此,您注意到的循环性是Django应用程序可以通过多种不同方式启动的结果。

答案 1 :(得分:0)

恕我直言,wsgi.py扮演着指向你的django项目所在的角色,对于像Apache这样的其他东西。

因此wsgi.py在django之外启动,它需要django设置。