随笔-生活工作点滴工作生活Django

Django settings 1

2019-07-04  本文已影响0人  凤箫之舞

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 , 因为这样做是多余的.

查看你已经更改了哪个配置项

查看你修改了哪几个配置项很容易, 在命令行输入 python manage.py diffsettings 就会显示当前配置与默认配置中的不同.

上一篇下一篇

猜你喜欢

热点阅读