22:django 配置详解
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的错误
所以,二者只能选一个,两个都不选或者都选,都是错误的
22:django 配置详解的更多相关文章
- Django -- settings 详解(转)
Django -- settings 详解 Django settings详解 1.基础 DJANGO_SETTING_MODULE环境变量:让settings模块被包含到python可以找到的目 ...
- logback 常用配置详解<appender>
logback 常用配置详解 <appender> <appender>: <appender>是<configuration>的子节点,是负责写日志的 ...
- logback配置详解2<appender>
logback 常用配置详解(二) <appender> <appender>: <appender>是<configuration>的子节点,是负责写 ...
- Nginx配置文件(nginx.conf)配置详解(2)
Nginx的配置文件nginx.conf配置详解如下: user nginx nginx ; Nginx用户及组:用户 组.window下不指定 worker_processes 8; 工作进程:数目 ...
- logback 常用配置详解(二) <appender>
logback 常用配置详解(二) <appender> <appender>: <appender>是<configuration>的子节点,是负责写 ...
- apache 虚拟主机详细配置:http.conf配置详解
apache 虚拟主机详细配置:http.conf配置详解 Apache的配置文件http.conf参数含义详解 Apache的配置由httpd.conf文件配置,因此下面的配置指令都是在httpd. ...
- Apache日志配置详解(rotatelogs LogFormat)
logs/error_logCustomLog logs/access_log common--默认为以上部分 修改为如下: ErrorLog "|/usr/sbin/rotatelogs ...
- Nginx配置文件(nginx.conf)配置详解
Nginx的配置文件nginx.conf配置详解如下: user nginx nginx ; Nginx用户及组:用户 组.window下不指定 worker_processes 8; 工作进程:数目 ...
- commons-logging和Log4j 日志管理/log4j.properties配置详解
commons-logging和Log4j 日志管理 (zz) 什么要用日志(Log)? 这个……就不必说了吧. 为什么不用System.out.println()? 功能太弱:不易于控制.如果暂时不 ...
随机推荐
- HDU.2640 Queuing (矩阵快速幂)
HDU.2640 Queuing (矩阵快速幂) 题意分析 不妨令f为1,m为0,那么题目的意思为,求长度为n的01序列,求其中不含111或者101这样串的个数对M取模的值. 用F(n)表示串长为n的 ...
- AOJ.866 飞越原野 (三维BFS)
AOJ.866 飞越原野 (三维BFS) 题意分析 点我挑战题目 相比于普通的BFS,要多一维来记录当前剩余的体力.而且还要额外的一层循环来处理,飞过的路程. 代码总览 #include <io ...
- bzoj3694: 最短路(树链剖分/并查集)
bzoj1576的帮我们跑好最短路版本23333(双倍经验!嘿嘿嘿 这题可以用树链剖分或并查集写.树链剖分非常显然,并查集的写法比较妙,涨了个姿势,原来并查集的路径压缩还能这么用... 首先对于不在最 ...
- 剑桥offer(41~50)
41.题目描述 求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). class Solution { pub ...
- redis 选择数据库
redis 127.0.0.1:6379> SELECT 1 # 使用 1 号数据库
- Android核心类源码分析
Handler流程1.首先Looper.prepare()在本线程中保存一个Looper实例,然后该实例中保存一个MessageQueue对象:因为Looper.prepare()在一个线程中只能调用 ...
- CSS3 :empty 选择器
这可是个好东西,我也是这个星期才发现的,下面我们来说具体功能. <!DOCTYPE html> <html> <head> <meta charset=&qu ...
- select + 回调 + 事件循环
#1. epoll并不代表一定比select好 # 在并发高的情况下,连接活跃度不是很高, epoll比select # 并发性不高,同时连接很活跃, select比epoll好 #通过非阻塞io实现 ...
- uoj308 【UNR #2】UOJ拯救计划
传送门:http://uoj.ac/problem/308 [题解] 考虑枚举用了$i$所学校,那么贡献为${k \choose i} * cnt * i!$ 意思是从$k$所选$i$所出来染色,$c ...
- Codeforces Round #411 (Div. 2) A-F
比赛时候切了A-E,fst了A Standings第一页只有三个人挂了A题,而我就是其中之一,真™开心啊蛤蛤蛤 A. Fake NP time limit per test 1 second memo ...