欢迎来到Louis的博客

人生三从境界:昨夜西风凋碧树,独上高楼,望尽天涯路。 衣带渐宽终不悔,为伊消得人憔悴。 众里寻他千百度,蓦然回首,那人却在灯火阑珊处。
扩大
缩小

setting.py

Django的settings文件包含Django应用的所有配置项。

配置文件只是一个使用模块级变量的一个Python模块。

因为配置文件是Python模块,所以要注意以下几项:

  • 不能有Python语法错误

  • 可以用Python语法实现动态配置

  • 可以从其他配置文件中引入变量

指定配置文件

使用Django时要通知Django当前使用的是哪个配置文件。可以改变环境变量 DJANGO_SETTINGS_MODULE 实现这一点。

通常我们使用这种方式来设置配置文件的路径:

import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Django_2018.settings')

这个在manage.py中有体现,在启动web服务前,先将配置文件路径加入到环境变量。

#!/usr/bin/env python
import os
import sys

if __name__ == '__main__':
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Django_2018.settings')    #设置环境变量
    try:
        from django.core.management import execute_from_command_line
    except ImportError as exc:
        raise ImportError(
            "Couldn't import Django. Are you sure it's installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?"
        ) from exc
    execute_from_command_line(sys.argv)
manage.py

On the server (mod_wsgi)

在服务器环境下,要通知WSGI应用当前使用的是哪个配置文件,用到 os.environ:

import os

os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'

在Python代码中使用settings

from django.conf import settings

print(settings.BASE_DIR)

注意 django.conf.settings 并不是一个模块!-- 而是一个对象!所以引入某个单独的设置项是不可能的

还要注意 不应该 直接引入 global_settings 和你自己的配置文件. django.conf.settings 整合了默认配置和网站指定配置, 从而只提供一个接口读取配置. 它也解耦了使用自定义配置文件的代码.

安全

由于配置文件包含敏感信息, 比如数据库密码, 所以应该限制对配置文件的访问. 比如更改文件权限, 从而只能令你和你的WEB服务器能读取配置文件. 这在共享主机的环境中非常重要!

 

Using settings without setting DJANGO_SETTINGS_MODULE

某些场合中, 你想绕过 DJANGO_SETTINGS_MODULE 环境变量来进行配置. 比如, 你正在使用django自带的模板系统, 而你并不想使用环境变量指定某个具体的配置文件.

from django.conf import settings

settings.configure(DEBUG=True)

通过 configure() 可以设置任何配置项, 每个参数对应一个值. 参数名称必须大写, 而且参数名必须是真实存在. 没有在 configure() 中出现的设置项在随后用到时, 仍会使用默认值.

如果你并不想使用整个框架, 仅仅是其中一小部分时, 如上述这般配置Django是非常必要的. 事实上, 我们建议您这样做.

因此, 通过 settings.configure() 配置django时, 并不会对当前进程的环境变量做任何修改.(可以查看 TIME_ZONE 了解为什么要这么做). 这意味着在上述情况下你仍然完全掌控着当前环境.

 

The Settings Reference 设置参考

 

posted on 2018-08-28 07:12  Louiszj  阅读(142)  评论(0)    收藏  举报

导航