django配置文件包含了你的django安装的所有配置信息,本节为大家详细讲解django的配置

基本知识

一个配置文件只是一个包含模块级别变量的的python模块,所有的配置变量都是大写的,哈哈哈,这是一个简单的例子

DEBUG = False
DEFAULT_FROM_EMAIL = 'webmaster@example.com'
TEMPLATE_DIRS = ('/home/templates/mike', '/home/templates/john')

因为python的配置文件也是一个python模块,所以也是如何python文件的特性的:

  • 不允许python语法错误
  • 可以使用python的语法动态的给配置变量赋值
  • 可以从其他模块导入变量

指定配置

当你使用django的时候,你必须指定使用哪一个配置文件。可以使用环境变量DJANGO_SETTINGS_MODULE来指定。

该环境变量的值必须是python 路径语法的,例如:mysite.settings

django-admin.py utility

当使用django-admin.py的时候,你可以一次性的指定环境变量或者每次运行的时候都显式指定配置模块:

#Example (Unix Bash shell):
export DJANGO_SETTINGS_MODULE=mysite.settings
django-admin.py runserver
#Example (Windows shell):
set DJANGO_SETTINGS_MODULE=mysite.settings
django-admin.py runserver
django-admin.py runserver --settings=mysite.settings

服务器环境

在你的服务器配置环境中,你应该使用os.environ告诉你的WSGI(web服务器网关接口)使用哪一个配置文件

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

默认设置

如果没有特别需要的话,django配置文件可以不主动配置任何东西。因为每一个设置都有一个默认值,所有的默认值都在django/conf/global_settings.py文件里面。

django首先把global_settings.py的配置加载过来,然后再加载指定的配置文件,并用指定的配置文件的配置覆盖global_settings.py里面的默认配置。所以导入global_settings.py的配置是多余的。

你可以是用django-admin.py diffsettings查看你的配置和django默认配置的不同之处(不同的地方会输出)

在python代码中使用配置

同时导入django.conf.settings可以使用配置文件里面的变量

from django.conf import settings
if settings.DEBUG:
# Do something

注意不要在运行中修改配置

安全性

因为配置文件里面都是一些很敏感的信息,比如你的数据库密码等等,所以你必须尽可能的限制别人去访问这个文件。比如修改文件的权限,特别实在那种共享主机的环境中。

自定义配置

很简单,在配置文件中可以按照下面的规范来创建配置:

  • 配置名全部大写
  • 不要和已经有的配置冲突或者重名

不使用DJANGO_SETTINGS_MODULE来配置

可以使用django.conf.settings.configure(default_settings,**settings)来自定义自己的配置文件

from django.conf import settings
settings.configure(DEBUG=True, TEMPLATE_DEBUG=True,
TEMPLATE_DIRS=('/home/web-apps/myapp', '/home/web-apps/base'))

configure函数可以接受任意多的关键字参数,每一个关键字参数都意味着一个配置名,因此每个关键字都必须是大写的,所有要用到但没有传参进去的都将从django的默认配置里面导入

默认的第一个参数是default_settings,用于指明默认的配置文件,如果你自定义了一个配置文件,可以使用可以参数,这个参数也是位置参数,所以下面的两种自定义配置文件的方法是等价的

from django.conf import settings
from myapp import myapp_defaults settings.configure(default_settings=myapp_defaults, DEBUG=True)
settings.configure(myapp_defaults, DEBUG = True)

configure函数和DJANGO_SETTINGS_MODULE二者必选其一

如果需要读取某些配置,却没有配置其一的时候,django会抛出ImportError的异常

如果二者重复调用的话,将会产生RuntimeError的错误

所以,二者只能选一个,两个都不选或者都选,都是错误的

最新文章

  1. Android 自定义View及其在布局文件中的使用示例(三):结合Android 4.4.2_r1源码分析onMeasure过程
  2. Hive安装(三)之奇怪的错误
  3. JavaScript实例---表格隔行变色以及移入鼠标高亮
  4. const 修饰函数
  5. 华为S5700S配置总结
  6. Matlab实现均匀量化
  7. 1.Basic Structure
  8. ios 给view添加一个渐变的背景色
  9. 关于CGI:Tomcat、PHP、Perl、Python和FastCGI之间的关系
  10. 【死磕 Spring】----- IOC 之 获取验证模型
  11. svn 卡死住,关闭后,用CleanUp报错解决
  12. Windows安装docker (带安装包)
  13. 64位 windows2008 R2 上安装32位oracle 10g 的方法
  14. 适用于WebApi的SQL注入过滤器
  15. R文本挖掘之jiebaR包
  16. 注册COMDLG32.OCX方法
  17. mybatis学习--缓存(一级和二级缓存)
  18. linux设置代理
  19. eclipse项目两个红点
  20. springmvc和encache集成

热门文章

  1. 洛谷1578:[WC2002]奶牛浴场——题解
  2. 函数strcat实现
  3. mysql 主从同步 M-S 搭建
  4. 获取指定IP地址对应的物理位置
  5. C++语言中数组指针和指针数组彻底分析
  6. HDU 5641
  7. @Autowired @Resource @Qualifier的区别
  8. mybatis中association和collection的column传入多个参数值
  9. UVA 11440 Help Tomisu
  10. 「6月雅礼集训 2017 Day10」perm(CodeForces 698F)