大家有没有碰到过这样的一个令人熟悉的场景?有一天你花了很长时间读到了一篇文章,学习到了很多新的知识和技巧,顿时发现自己进步了,感到非常开心。小编我今天就打算送给大家这样一篇文章,让你对Django的settings.py文件有个全新的理解,喜欢的就留言点赞吧。妹子图照发,祝大家天天好心情。
settings.py的默认设定与工作原理
Django设置文件settings.py包含的选项非常多,但好消息是大部分不需要我们手动去设置。当我们使用django-admin.py startproject xxx命令创建一个Django项目时,你会发现生成的settings.py已经包含了部分基本的默认设定,我们只需要修改和添加我们需要使用的设定就好了。
一个项目完整的全局默认设置在django/conf/global_settings.py文件中。Django在编译时,会先载入global_settings.py中的全局默认配置值,然后加载用户指定的settings文件,重写部分全局默认设置。
下面我们就来看看一些常用设置选项及它们背后的含义。
BASE_DIR
默认值os.path.dirname(os.path.dirname(os.path.abspath(__file__)))。这个是Django项目文件夹所在目录得绝对路径,一般不要修改。
DEBUG
默认值是True。在本地开发测试环境下设置DEBUG=True可以显示bug信息,便于开发者找出代码错误所在。当你在部署项目在生产环境时,请切记设置DEBUG=False。因为生成环境下打开Debug会暴露很多敏感设置信息(比如数据库密码)。注意: 当你设置DEBUG=False, 你一定要设置ALLOWED_HOSTS选项, 否则会抛出异常。
ALLOWED_HOSTS
默认值为空[]。设置ALLOWED_HOSTS是为了限定用户请求中的host值,以防止黑客构造包来进行头部攻击。该选项正确设置方式如下:
-
DEBUG=True: ALLOWED_HOSTS可以为空,也可设置为['127.0.0.01', 'localhost']
-
DEBUG=False: ALLOWED_HOSTS=['46.124.78.xx', 'www.bat.com','127.0.0.1']
当你关闭DEBUG时,HOST一般为服务器公网IP或者注册域名。 当你还需要使用子域名时,你可以用'.bat.com'。它将匹配bat.com, www.bat.com和news.bat.com。在正式部署项目时,请尽量不要设置ALLOWED_HOSTS=['*']。
SECRET_KEY
SECRET_KEY是Django根据自己算法生成的一大串随机数,本质是个加密盐,用于防止CSRF(Cross-site request forgery)跨站请求伪造攻击。当部署Django项目到生产环境中时,Django文档建议不直接在settings.py里输入字符串,而是采取下面两种方法读取SECRET_KEY。
# 方法一: 从环境变量中读取SECRET_KEY import os SECRET