Django的settings文件包含Django应用的所有配置项。
该篇会介绍settings是如何运行,以及有哪些设置项是可用的。
基础
配置文件只是一个使用模块级变量的一个Python模块。
一组配置例子:
ALLOWED_HOSTS = ['www.example.com']
DEBUG = False
DEFAULT_FROM_EMAIL = 'webmaster@example.com'
注解
If you set DEBUG
to False
, you also need to properly set the ALLOWED_HOSTS
setting.
因为配置文件是Python模块,所以要注意以下几项:
不能有Python语法错误
可以用Python语法实现动态配置,例如:
MY_SETTING = [str(i) for i in range(30)]
可以从其他配置文件中引入变量
指定配置文件
DJANGO_SETTINGS_MODULE
使用Django时要通知Django当前使用的是哪个配置文件。可以改变环境变量 DJANGO_SETTINGS_MODULE
实现这一点。
DJANGO_SETTINGS_MODULE
的值是一个符合Python语法的路径,比如 mysite.settings
。
要注意settings模块应该在Python可搜索到的路径中 import search path.
The django-admin
utility
When using django-admin, you can either set the environment variable once, or explicitly pass in the settings module each time you run the utility.
例子(Unix Bash shell):
export DJANGO_SETTINGS_MODULE=mysite.settings
django-admin runserver
例子(Windows shell):
set DJANGO_SETTINGS_MODULE=mysite.settings
django-admin runserver
使用 --settings
命令行参数指定配置模块路径:
django-admin runserver --settings=mysite.settings
On the server (mod_wsgi
)
在服务器环境下,要通知WSGI应用当前使用的是哪个配置文件,用到 os.environ
:
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
默认配置
在无需配置的情况下,Django配置文件没必要定义任何配置项。
因为每个配置项都有一个明确的默认值。
默认值都保存在模块 django/conf/global_settings.py
中。
Django按如下算法编译配置模块:
- 从
global_settings.py
中加载配置项 - 从指定的配置文件中加载配置项, 覆盖对应的全局配置项.
注意: 配置文件中不要再重复引用 global_settings
, 因为这样做是多余的.
查看你已经更改了哪个配置项
查看你修改了哪几个配置项很容易, 在命令行输入 python manage.py diffsettings
就会显示当前配置与默认配置中的不同.
网友评论