Django框架之settings配置
1818 字
9 分钟
Django框架之settings配置
- 1纯手撸Web框架
- 2Python框架初识
- 3Django框架初识
- 4Django框架安装
- 5Django框架入门之小白必会三板斧
- 6Django便捷函数shortcuts
- 7Django框架入门之静态文件
- 8Django的静态文件
- 9Django框架入门之request对象
- 10Django框架入门之ORM操作
- 11Django框架之生命周期流程图
- 12Django框架之路由层
- 13Django框架之视图层
- 14Django框架之模板层
- 15Django框架之模型层
- 16图书管理系统
- 17Ajax基础操作
- 18Ajax进阶操作
- 19JS确认插件补充
- 20Django框架之序列化组件serializers
- 21Django框架之批量插入数据
- 22Django框架补充之分页器推导
- 23Django框架之Form组件
- 24Django框架Form组件之常用字段及插件
- 25Django框架Form组件之渲染HTML代码
- 26Django框架Form组件之渲染错误信息
- 27Django框架Form组件之钩子函数(Hook)
- 28Django框架Form组件之源码
- 29Django框架Form组件之模型表单ModelForm
- 30Django表单API详解
- 31Django框架之Cookie和Session
- 32Django框架之会话session补充
- 33Django框架之CBV添加装饰器的三种方式
- 34Django框架之中间件引入
- 35Django框架之中间件思想
- 36Django框架之csrf跨站请求
- 37Django框架之auth模块
- 38Django框架之settings源码
- 39Django框架之settings配置本文
- 40Django框架之settings核心配置项
- 41RBAC权限系统
- 42前端基础之URL编码
【一】引言
- Django项目的设置文件位于项目同名目录下,名叫settings.py。
- 这个模块,集合了整个项目方方面面的设置属性,是项目启动和提供服务的根本保证。
【二】简述
- settings.py文件本质上是一个Python模块,带有模块级别的变量。
- 下面是一些示例设置:
ALLOWED_HOSTS = ['www.example.com']DEBUG = FalseDEFAULT_FROM_EMAIL = 'webmaster@example.com'- 注:当DEBUG为False时,必须设置ALLOWED_HOSTS的值。
- 配置settings.py时:
- 不允许出现Python层面的语法错误;
- 可以使用普通的Python语法动态地设置,例如:MY_SETTING = [str(i) for i in range(30)];
- 可以从其它设置文件导入值。
【三】指定配置文件启动项目
【1】引言
- 当你使用Django时,你必须告诉它你要使用哪个配置文件来启动服务。
- 也就是给环境变量DJANGO_SETTINGS_MODULE赋值。
- 这个值要使用Python路径的语法,例如mysite.settings,而不是操作系统的文件路径语法。
- 注意,被设置的配置文件应该在Python的导入查找路径中。
- 默认情况下,我们是不需要设置这个变量的,直接启动项目就可以。
- 但是,有时候需要使用别的配置启动项目。
【2】django-admin命令
- 当使用django-admin命令时, 可以设置临时环境变量,或者每次运行该工具时显式地指定配置文件。
(1)Unix/Linux/Mac系统
- 例如在Unix Bash shell下:
# 声明Django配置文件的环境变量export DJANGO_SETTINGS_MODULE=mysite.settings
# 启动Django项目django-admin runserver(2)Windows系统
- 在Windows shell下,也就是cmd环境:
# 设置Django配置文件环境变量set DJANGO_SETTINGS_MODULE=mysite.settings
# 启动Djangodjango-admin runserver(3)直接指定启动参数
- 使用—settings命令行参数可以手工指定:
# 在启动Django时配置参数django-admin runserver --settings=mysite.settings【3】服务器环境
- 如果是在服务器环境中,比如mod_wsgi网关接口,需要告诉WSGI,你准备使用哪个配置文件。
- 这可以使用os.environ实现:
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'- 再次强调,所有上面的操作都要求mysite.settings必须在查找路径中,否则要用绝对路径。
【四】默认配置文件
【1】引言
- Django的配置文件并不需要定义所有的选项,每个选项都有一个默认值,这些默认值位于django/conf/global_settings.py模块中。
- 我们不要直接引用和修改这个文件,应该使用settings.py文件。
【2】配置文件加载顺序
- 从global_settings.py中加载默认配置;
- 从指定的配置文件中加载(通常是settings.py),如有必要则覆盖global_settings.py中的默认配置。
有一个简单的方法可以查看当前有哪些设置与默认的设置不一样了
python manage.py diffsettings命令。
【五】在Django环境中使用settings
【1】使用 settings
- 所谓的在Django环境中,指的是要使用settings的模块(可以简单的理解为局域网内主机),必须是Django工作状态中能够链接的模块,不能是孤零零,额外的一个Python脚本(外部主机)。
- 这时,可以通过导入django.conf.settings来使用配置文件。 例如:
from django.conf import settings
if settings.DEBUG: # Do something【2】注意
- django.conf.settings不是一个模块,而是一个对象。
- 所以不可以单独导入每个配置项:
from django.conf.settings import DEBUG # 这是错误的做法【六】配置文件操作
【1】不要在运行时更改设置
- 请不要在Django项目运行时改变设置。
- 例如,不要在视图中这样做:
from django.conf import settings
settings.DEBUG = True # 不要这么做【2】注意安全
- 因为settings.py经常会包含敏感的信息,例如管理员、远程主机、数据库的用户名或密码,你应该尽一切可能来限制对它的访问。
- 例如,修改它的文件权限使得只有你和Web服务器使用者可以读取它。
- 或者将相关的密码信息转移到专门的文件中,然后在settings中读取它们。
【3】添加自己的配置项
- 如果要添加自己的配置项,需遵循以下准则:
- 配置项名称必须全为大写。
- 不要使用一个已经存在的设置
【4】使用configure方法
(1)使用场景
- 在某些情况下,你可能希望绕过DJANGO_SETTINGS_MODULE环境变量,手动设定 Django 的配置项。
(2)使用方法
- 为此,Django提供了settings.configure()方法:
from django.conf import settings
settings.configure(DEBUG=True)(3)注意事项
- configure() 可以设置任何配置项,每个参数对应一个值。
- 参数名称必须大写,而且参数名必须是真实存在。
- 没有在 configure() 中出现的设置项在随后用到时,仍会使用默认值。
(4)修改配置
- 如果你并不想使用整个框架,仅仅使用其中一小部分时,如上述般配置 Django 是非常必要的。
- 如果你想让默认值来自其它地方,而不是django.conf.global_settings,你可以传递一个提供默认设置的模块或类作为default_settings参数(或第一个位置参数)给configure()方法调用。
- 在下面的示例中,默认的设置来自myapp_defaults,并且单独设置DEBUG为True,而不论它在myapp_defaults中的值是什么:
from django.conf import settingsfrom myapp import myapp_defaults
settings.configure(default_settings=myapp_defaults, DEBUG=True)- 下面的示例和上面一样,只是使用myapp_defaults作为一个位置参数:
settings.configure(myapp_defaults, DEBUG=True)- 正常情况下,还是不要用这种方式覆盖默认值。
- Django的默认配置文件还是很可靠的,你可以安全地使用它们。
- 注意,如果你使用自己写的默认模块,它将完全取代Django的默认模块,你必须指定每个可能用到的配置项的值。
- 完整的配置项清单,参考django.conf.settings.global_settings模块。
【5】configure()或DJANGO_SETTINGS_MODULE二者只能用一
(1)引言
- 如果你没有设置DJANGO_SETTINGS_MODULE环境变量,你必须使用configure()方法来加载配置。
- 如果你没有设置DJANGO_SETTINGS_MODULE,也没有调用configure(),在首次调用配置文件时Django 将引发一个ImportError异常。
- 也就是我们最常见的问题:
- 为啥我启动不了Django?
- 为什么我的脚本不能调用Django的功能?
- 为什么我的代码无法链接到Django内部?
- 如果你设置了DJANGO_SETTINGS_MODULE,并访问了一下设置,然后又调用configure(),Django 将引发一个RuntimeError异常,表示已经有配置,不要重复配置。
(2)解决方案
- 有个属性正好可以用于这种情况,防止出现异常:
from django.conf import settingsif not settings.configured: settings.configure(myapp_defaults, DEBUG=True)(3)总结
- configure()或DJANGO_SETTINGS_MODULE****只能用一个
- 并且只能用一次。
- 不可以两个都用和都不用。
【七】外部脚本调用Django环境(django.setup())
- 如果你使用外部脚本, 加载一些Django模板,或者使用ORM来获取一些数据,除了配置settings模块之外,还需要一个步骤。
- 也就是在设置DJANGO_SETTINGS_MODULE或调用configure()之后,还需要调用django.setup(),像这样:
import djangofrom django.conf import settingsfrom myapp import myapp_defaults
settings.configure(default_settings=myapp_defaults, DEBUG=True)django.setup()
# 现在可以访问Django项目内部的模块了from myapp import models- 请注意,只有真正独立的外部脚本,才需要调用django.setup()。
- django.setup()只能调用一次。
- 尽量使用下面的方式,防止重复调用:
if __name__ == '__main__': import django django.setup()支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!
相关文章智能推荐
1
C 语言开发环境的安装与配置
编程语言在 Windows、Linux 与 macOS 上安装 C 工具链,配置编辑器,并编译运行第一个 C 程序。
2
C 语言发展史
编程语言了解 C 语言从 BCPL、B 语言到现代标准 C 的发展历程、核心特点与应用领域。
3
C 语言初识:程序运行机制与基本结构
编程语言认识 C 程序从源代码到运行的完整流程,以及基础语法和程序的基本结构。
4
C 语言基础:注释、关键字、变量与数据类型
编程语言学习 C 语言的注释、关键字、标识符、常量、变量和基本数据类型等基础知识。
5
C 语言数据类型
编程语言理解 C 语言的数据类型体系,包括基本类型、整数类型、浮点类型和逻辑类型。
随机文章随机推荐














