Django settings源码解析

Django settings源码

Django中有两个配置文件

局部配置:配置文件settings.py,即项目同名文件夹下的settings.py文件

全局配置:django内部全局的配置文件settings.py,需要导入才能看到

from django.conf import settings # 是一个对象,单例模式
from django.conf import global_settings  # 真正的默认配置文件

特点:

先加载全局配置,再加载局部配置,以局部优先

源码解析

点进settings文件中

发现settings是LazySettings的实例化对象

点击LazySettings到定义的地方

os.environ 相当于是一个全局的字典,只要在项目当中通过os.environ都可以拿到这个字典,这里是从这个字典中取一个ENVIRONMENT_VARIABLE,是局部settings文件的路劲

再点进DJANGO_SETTINGS_MODULE看看是什么东西

原来是从全局拿一个DJANGO_SETTINGS_MODULE值

但是这个值在什么时候设置的呢,Django一旦启动就会去查找settings文件

而Django的启动文件又是manage.py,我们去manage.py中去看看

manage.py中看到了这个

这个x相当于字典的赋值,这里的值就是项目中我们可以进行配置的settings文件的路径

然后继续看LazySettings类

这里实例化了一个对象,并且把拿到的settings_module传了进去,及"Mysite.settings"被传进去了

来到下面的Settings类

看到有一个global_settings,点进去看看是什么

可以发现,global_settings文件是Django系统默认的配置文件,所有的配置都在这里

回到Settings类

总结:

先是将项目路径settings文件设置环境变量

然后在django项目初始化创建一个settings文件对象

先是将 from django.conf import global_settings中的所有变量名称用dir提取出来

变成setting对象的属性

根据设置的环境变量将项目的setting文件

用importlib.import_module将其导入,然后用dir函数提取大写字母变量将其赋值给setting对象

如果变量在项目的配置文件中配置了就把对应的属性更新,如果没有配置就使用系统的默认值

原文地址:https://www.cnblogs.com/kai-/p/12168978.html

时间: 2024-09-30 00:21:39

Django settings源码解析的相关文章

Django对中间件的调用思想、csrf中间件详细介绍、Django settings源码剖析、Django的Auth模块

目录 使用Django对中间件的调用思想完成自己的功能 功能要求 importlib模块介绍 功能的实现 csrf中间件详细介绍 跨站请求伪造 Django csrf中间件 form表单 ajax csrf相关装饰器 在CBV上加csrf装饰器 Django settings源码剖析及模仿使用 Django settings源码剖析 查看内部配置文件 模仿使用 Auth模块 auth简介 auth模块常用方法 创建用户 校验用户名和密码 保存用户登录状态 判断当前用户是否登录 校验原密码 修改密

Django APIView源码解析

APIView用法: 在Django之 CBV和FBV中,我们是分析的from django.views import View下的执行流程,以下是代码 from django.views import View class IndexView(View): def get(self,request, *args, **kwargs): return HttpResponse("ok") def dispatch(self, request, *args, **kwargs): ret

Django 【第二十五篇】Django admin源码解析

一.admin的源码流程 首先可以确定的是:路由关系一定对应一个视图函数 a.当点击运行的时候,会先找到每一个app中的admin.py文件,并执行 b.执行urls.py admin.site是什么? admin.site,urls    返回的是一个元组,里面的第一个元素是一个列表 django-admin的源码流程 我们自己生成的动态的访问url ====================================初级版========================= from dj

Django官方源码解析

Django官方文档解析 标签(空格分隔): Django 创建一个应用 python manage.py startapp polls 上述操作会创建出一个polls目录,其目录结构大致如下: polls/ __init__.py admin.py apps.py migrations/ __init__.py models.py tests.py views.py 创建一个视图 在polls目录中打开views.py,并输入如下代码: from django.http import Http

Django的View(视图)、settings源码的解析、模板层

一.FBV与CBV 视图函数并不只是指函数,也可以是类 FBV:基于函数的视图,类似面向函数式编程 CBV:基于类的视图,类似面向对象编程 研究解析render源码: render:返回html页面:并且能够给该页面传值 分析:FBV视图原理 from django.shortcuts import render,HttpResponse # Create your views here. from django.template import Template,Context # FBV解析

django 之csrf、auth模块及settings源码、插拔式设计

目录 基于django中间件拷贝思想 跨站请求伪造简介 跨站请求伪造解决思路 方式1:form表单发post请求解决方法 方式2:ajax发post请求解决方法 csrf相关的两个装饰器 csrf装饰器在CBV上的特例 django settings源码 auth模块简介 auth创建用户 auth扩展表 基于django settings配置文件实现插拔式设计 csrf:Cross Site Request Forgery protection 基于django中间件拷贝思想 # start.

Django-Filter源码解析一

Django Filter源码解析 最近在看Django-FIlter项目的源码,学习一下别人的开发思想: 整体介绍 首先,我从其中一个测试用例作为入口,开始了debug之路,一点一点的断点,分析它的执行顺序,如图: ok,下面从代码的层面进行分析: url url(r'^books/$', FilterView.as_view(model=Book)), view函数,这里的实现方式应该是借鉴了Django中自带的ListView,其同样的继承了MultipleObjectTemplateRe

Django的settings源码分析

首先需要在settings文件中导入,然后查看settings源码 from django.conf import global_settings,settings 点进去LazySettings我们会发现它是一个类,所以settings是类实例化出来的对象,这里利用了单例模式. 然后我们点入manage.py文件中看到 最后点入Settings类 原文地址:https://www.cnblogs.com/baohanblog/p/12164257.html

django源码解析之BigIntegerField (一)

要分析django的源码,来更深入的学习django,是一个不错的方法,可惜需要大量的时间. 所以,能分析多少就是多少吧. 本次源码分析以1.4.16为基础. 用sublime 打开下载的源码,使用 Find in Folder,查找BigIntegerField 在其中可以看到这样的代码: 1 1005 def formfield(self, **kwargs): 2 1006: defaults = {'min_value': -BigIntegerField.MAX_BIGINT - 1,