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 配置详解的更多相关文章

  1. Django -- settings 详解(转)

    Django -- settings 详解   Django settings详解 1.基础 DJANGO_SETTING_MODULE环境变量:让settings模块被包含到python可以找到的目 ...

  2. logback 常用配置详解<appender>

    logback 常用配置详解 <appender> <appender>: <appender>是<configuration>的子节点,是负责写日志的 ...

  3. logback配置详解2<appender>

    logback 常用配置详解(二) <appender> <appender>: <appender>是<configuration>的子节点,是负责写 ...

  4. Nginx配置文件(nginx.conf)配置详解(2)

    Nginx的配置文件nginx.conf配置详解如下: user nginx nginx ; Nginx用户及组:用户 组.window下不指定 worker_processes 8; 工作进程:数目 ...

  5. logback 常用配置详解(二) <appender>

    logback 常用配置详解(二) <appender> <appender>: <appender>是<configuration>的子节点,是负责写 ...

  6. apache 虚拟主机详细配置:http.conf配置详解

    apache 虚拟主机详细配置:http.conf配置详解 Apache的配置文件http.conf参数含义详解 Apache的配置由httpd.conf文件配置,因此下面的配置指令都是在httpd. ...

  7. Apache日志配置详解(rotatelogs LogFormat)

    logs/error_logCustomLog logs/access_log common--默认为以上部分 修改为如下: ErrorLog "|/usr/sbin/rotatelogs ...

  8. Nginx配置文件(nginx.conf)配置详解

    Nginx的配置文件nginx.conf配置详解如下: user nginx nginx ; Nginx用户及组:用户 组.window下不指定 worker_processes 8; 工作进程:数目 ...

  9. commons-logging和Log4j 日志管理/log4j.properties配置详解

    commons-logging和Log4j 日志管理 (zz) 什么要用日志(Log)? 这个……就不必说了吧. 为什么不用System.out.println()? 功能太弱:不易于控制.如果暂时不 ...

随机推荐

  1. POJ3421:X-factor Chains——题解

    http://poj.org/problem?id=3421 题目大意:一个数列,起始为1,终止为一给定数X,满足Xi < Xi+1 并且Xi | Xi+1. 求出数列最大长度和该长度下的情况数 ...

  2. HDU 2083(排序+绝对值+中间值求和)

    简易版之最短距离 点我跳转到HDOJ Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...

  3. IDEA中使用Docker: 图形化 or 命令行 ,你更稀罕那个??

    Docker简介: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化. 容器是完全使用沙箱机 ...

  4. Leetcode 138. 复制带随机指针的链表

    1.题目要求 给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点. 要求返回这个链表的深度拷贝. 2.解题思路 (1)笔试思路(求速度,拿分数):使用哈希表 /* ...

  5. 【java】AES加密解密|及Base64的使用

    转载自:http://www.cnblogs.com/arix04/archive/2009/10/15/1511839.html AES加解密算法,使用Base64做转码以及辅助加密: packag ...

  6. 普通用户加sudo权限

    没配置之前希望在普通用户下,通过sudo命令,让用户暂时拥有root权限,并创建一个文件夹.很明显,失败了,错误原因是:该用户暂没有root权限.  解决办法如下 1.打开sudoers文件 切换到r ...

  7. 关于$.data(element,key,value)与ele.data.(key,value)的区别

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  8. wiki文档书写格式

    文档基本规范 标题 标题:标明需求的简短语句.或模块名称,目录是由标题生成,一份目录结构清晰的需求文档与标题的划分是密不可分. 正文 正文:有规范格式和生效标志的正式文本,正文包括 文字.表格.图片. ...

  9. redhat 7 安装oracle12.1

    https://oracle-base.com/articles/12c/oracle-db-12cr1-installation-on-oracle-linux-7   一定要配置yum本地源   ...

  10. 【洛谷 P2042】 [NOI2005]维护数列(自闭记第一期)

    题目链接 首先,这题我是没A的..太毒瘤了 题目本身不难,都是\(Splay\)的基操,但是细节真的容易挂. 调了好久自闭了,果断放弃.. 希望本节目停更. 放上最终版本 #include <c ...