Django源码学习之setting

django.setup() 源码分析 from django.utils.version import get_version VERSION = (2, 2, 3, 'final', 0) __version__ = get_version(VERSION) def setup(set_prefix=True): """ Configure the settings (this happens as a si... 阅读详情

Django源码学习之setting

相关源码
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "shop.settings")设置环境变量

django项目初始化

 

def setup(set_prefix=True):#django项目初始化,设置导入
    """
    Configure the settings (this happens as a side effect of accessing the
    first setting), configure logging and populate the app registry.
    Set the thread-local urlresolvers script prefix if `set_prefix` is True.
    """
    from django.apps import apps
    from django.conf import settings#对应settings=LazySettings
    from django.urls import set_script_prefix
    from django.utils.encoding import force_text
    from django.utils.log import configure_logging

    configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
    if set_prefix:
        set_script_prefix(
            '/' if settings.FORCE_SCRIPT_NAME is None else force_text(settings.FORCE_SCRIPT_NAME)
        )
    apps.populate(settings.INSTALLED_APPS)

 settings创建过程

 

mport importlib
import os
import time
from django.conf import global_settings
from django.core.exceptions import ImproperlyConfigured
from django.utils.functional import LazyObject, empty

ENVIRONMENT_VARIABLE = "DJANGO_SETTINGS_MODULE"
class LazySettings(LazyObject):
    """
    A lazy proxy for either global Django settings or a custom settings object.
    The user can manually configure settings prior to using them. Otherwise,
    Django uses the settings module pointed to by DJANGO_SETTINGS_MODULE.
    """
    def _setup(self, name=None):
        """
        Load the settings module pointed to by the environment variable. This
        is used the first time we need any settings at all, if the user has not
        previously configured the settings manually.
        """
        settings_module = os.environ.get(ENVIRONMENT_VARIABLE)
        if not settings_module:
            desc = ("setting %s" % name) if name else "settings"
            raise ImproperlyConfigured(
                "Requested %s, but settings are not configured. "
                "You must either define the environment variable %s "
                "or call settings.configure() before accessing settings."
                % (desc, ENVIRONMENT_VARIABLE))

        self._wrapped = Settings(settings_module)




class Settings(object):
    def __init__(self, settings_module):
        # update this dict from global settings (but only for ALL_CAPS settings)
        for setting in dir(global_settings):
            if setting.isupper():
                setattr(self, setting, getattr(global_settings, setting))

        # store the settings module in case someone later cares
        self.SETTINGS_MODULE = settings_module

        mod = importlib.import_module(self.SETTINGS_MODULE)

        tuple_settings = (
            "INSTALLED_APPS",
            "TEMPLATE_DIRS",
            "LOCALE_PATHS",
        )
        self._explicit_settings = set()
        for setting in dir(mod):
            if setting.isupper():
                setting_value = getattr(mod, setting)

                if (setting in tuple_settings and
                        not isinstance(setting_value, (list, tuple))):
                    raise ImproperlyConfigured("The %s setting must be a list or a tuple. " % setting)
                setattr(self, setting, setting_value)
                self._explicit_settings.add(setting)

        if not self.SECRET_KEY:
            raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")

        if hasattr(time, 'tzset') and self.TIME_ZONE:
            # When we can, attempt to validate the timezone. If we can't find
            # this file, no check happens and it's harmless.
            zoneinfo_root = '/usr/share/zoneinfo'
            if (os.path.exists(zoneinfo_root) and not
                    os.path.exists(os.path.join(zoneinfo_root, *(self.TIME_ZONE.split('/'))))):
                raise ValueError("Incorrect timezone setting: %s" % self.TIME_ZONE)
            # Move the time zone info into os.environ. See ticket #2315 for why
            # we don't do this unconditionally (breaks Windows).
            os.environ['TZ'] = self.TIME_ZONE
            time.tzset()

 

先是将项目路径文件设置环境变量,然后在django项目初始化创建一个settings对象,先是将 from django.conf import global_settings的变量使用dir提取出来,变成setting对象的属性,根据设置的环境变量将项目的setting.py用importlib.import_module将其导入,然后用dir函数提取大写字母变量将其赋值给setting对象。

详解岭回归与L2正则化 最小二乘法存在不可逆和病态问题,导致解析解不可计算或不稳定,岭回归是一种有效的解决方法,以损失无偏性来换取稳定解, 本文介绍详细介绍了岭回归的基本原理,并从L2正则化角度来进行了解释。 阅读详情

相关推荐

计算机网络实验——入侵检测系统实验

在图1所示的网络结构中,此方案的具体实施:在路由器Router1的接口1出方向配置入侵检测策略,在收到ICMP ECHO请求包时,丢弃并同步向日志服务器报告警告,此时,终端PC2和PC3无法对终端PC0和PC1执行ping操作,并且日志服务器将记录相应的警告信息;在实验一的基础上,添加扩展分组过滤器,指定需要进行检测的信息流的类别,将扩展分组和对应的入侵检测规则进行绑定,使得只对特定的信息流进行入侵检测。加载指定类别的特征库,这里的指定类别是 ios_ips 类别中的 basic 子类别。

放放的博客 1563

apache配置完django后启动失败_【django深坑】一案例探究django项目日志配置加载&修改过程...

背景这段时间在使用django框架过程中碰到一个奇怪的问题,明明在代码中对日志级别进行了设置,但是本地环境调试时候一直没有生效,用的还是一开始设置的默认级别。百思不得其解,所以从源码的角度尝试去分析这个问题,发现原来这是django的一个深坑。这篇文章记录下来,免得更多人踩坑。问题代码修改日志级别相关的代码如下,相信也算是常见的用法:# settings.py LOGGING = { 'v...

weixin_32365483的博客 598

“迎圣诞,拿大奖” 活动赛题 Web-SQLi

1. php中sprintf()函数漏洞原理及其利用; 2. mysql盲注语法及python脚本; 3. sqlmap的需要进一步学习;

qq_34106499的博客 674

Django项目配置文件拆分(含Pycharm控制台启动报错解决方法)

Django项目配置文件拆分 为了便于演示,本文将会新建一个名为SettingsDemo的全新项目 本文基于Pycharm 做配置演示 文章目录Django项目配置文件拆分1. 新建 settings 包2. 在settings下新建不同环境的配置文件3. 修改配置文件内容1.` base.py`2. `dev.py`3. `prod.py`4. 修改项目默认配置文件方法1. 运行时指定配置文件位置方法2. 修改 `wsgi.py` 文件,指定新的配置文件位置5. 处理 Python 控制台 打开时的报

南来北往技术小栈 794

PSF(点扩散函数)与去卷积算法消除图像模糊

本文旨在总结图像处理中使用去卷积的传统方法来进行图像去模糊的相关知识。

m0_53607446的博客 6014

Windows Server 搭建ftp服务

Windows Server 搭建ftp服务

ch258563的博客 1010

67. Django日志logging设置

需求在项目开发中,如果需要调试的时候,一开始大部分会去直接使用print, 但是print的频繁时候会比较损耗服务的性能,并且无法将日志输出的文件中进行存储。所以应该尽量避免使用prin...

DevOps海洋的渔夫@专栏 2806

【python爬虫--爬取电商商品及对其销量、好差评等数据进行分析】Python爬虫爬取电商商品及大数据分析-实战

选择目标电商网站:这里选择爬取两个不同电商网站(比如京东、淘宝)上的商品数据,包括商品名称、价格、销量和评价信息。编写爬虫:通过爬虫获取商品信息并保存数据。数据清洗与对齐:将两个电商网站抓取到的数据进行统一清洗和对齐。数据分析:进行销量分析、好评与差评分析等。

Dreams°的博客 4012

django从runserver到启动成功

仿照django自带的admin实现自己的admin组件 https://docs.djangoproject.com/zh-hans/2.2/ref/contrib/admin/ django从runserver到启动成功 运行python manage.py runserver启动 打开manage.py文件可以发现该文件代码非常简单,主要干了两件事情: 将settings.py文...

1033

25、量子计算:中性原子与约瑟夫森结量子比特

本文详细探讨了中性原子和约瑟夫森结两种量子比特在量子计算中的应用。中性原子量子比特利用光晶格实现量子态的操控,具有长相干时间的优势,但面临可扩展性和多量子比特操作的挑战;而约瑟夫森结量子比特基于超导技术,结合半导体制造工艺,具有低耗散和潜在的高可扩展性,但在参数控制和环境干扰方面存在难题。文章还比较了这两种方案的性能、应用场景及未来发展趋势,展望了它们在量子计算发展中的潜力与突破方向。

ol789012的博客 212

AIGC游戏开发:如何评估生成内容的玩家满意度?

如何量化评估生成内容对玩家体验的影响?本文聚焦AIGC生成的游戏内容(包括但不限于剧情、关卡、NPC对话、道具),系统探讨玩家满意度的评估方法论,覆盖主观与客观评估、静态与动态内容、短期与长期体验等场景。核心概念:定义AIGC与玩家满意度的关联维度;评估方法:主观(问卷/访谈)与客观(行为/生理数据)评估的技术细节;数学模型:构建多指标融合的评估模型;实战案例:以AIGC生成关卡为例,演示从数据采集到模型落地的全流程;工具资源:推荐数据采集、分析与建模的工具链;

AI天才研究院 1224

Django学习——setting.py源码解析与常用配置

/Django/conf/init.py Django源码解析:setting.py 位于/Django/conf/init.py 转载http://www.cnblogs.com/weishenhong/p/4929098.html 1. setting.py文件我们在django项目中,新建一个app的时候,都会有一个setting.py文件,里面包含了整个项目所有的配置,包括apps,

tianyaqpzm的博客 2042

FCC 首个扫地机器人豁免落地,Matic 凭什么抢先?

Matic获FCC首个扫地机器人豁免,实为提前布局的合规姿态。其产品在美国组装,并采用已认证射频模组,虽未达65%美国成分门槛,但已具备“本土制造”优势。豁免本质是对既有合规状态的确认,而非解救。此举在商业上放大品牌价值,抢占“安全、合规、本土”叙事高地,凸显供应链安全正取代技术标准成为监管核心。未来合规成本将攀升,规则主导权仍在FCC手中。

致力于lidar应用开发 98

Django源码解析

1. 前言 最近自己想搭一个python的后台框架,但是中间遇到了许多问题。 于是乎选择先读一下别人的框架,从别人的框架中学习一些最基本的思想,思考其中的不足。 由于以前做过一些Django的项目,对其也比较熟悉。于是乎选择,从读Django的源码入手去分析框架的源码。希望在这里,可以和大家共同成长和进步。 当然,由于我的水平有限,可能在分析的时候会出现许多问题,希望能指出,大神...

weixin_30315435的博客 243

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

查看django setting 源码

form django .conf impirt settings 这个是真正的配置文件的settings form django.conf import golbal_settings django全局 配置文件 为什么 本地的settings 文件里面所有的名字要是大写 第一步先是给 全局的那个大字典赋值 大字典就是os.environ 然后通过setdefaul...

weixin_30823833的博客 245

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Django源码解析:setting.py

1. setting.py文件 我们在django项目中,新建一个app的时候,都会有一个setting.py文件,里面包含了整个项目所有的配置,包括apps,中间键,数据库等等,django是如何将该setting文件利用起来的呢。 2. 从setting.py配置文件到Setting类 (1)启动的时候,指定默认的配置文件 django在启动的时候,会调用manage.py文件运行se

寻找极限的猫 536

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

django源码解读: setting懒加载

前言 上次我们了解了django启动原理,细心的朋友可能发现django中的setting配置文件加载时懒加载,接下来我们了解下setting的懒加载 懒加载 我们从manager.py进入management/__init__.py,我们可以看到导入有这个from django.conf import settings,我们进入setting后就可以看到懒加载源码 class LazySettings(LazyObject): """ 全局Django设置或自定义设置对象的惰性代

小贱的博客 1949

Python Day 71 Django框架setting源码分析、基于该源码原理实现用户在暴露的setting文件中自定义的配置就使用用户配置的,没配置就是用全局默认的...

  ##Django框架setting源码分析 ENVIRONMENT_VARIABLE = "DJANGO_SETTINGS_MODULE" #这个是全局大字典 from django.conf import settings #第一步:查看django 全局setting源码入口 class Settings(object): #第四步 def __init...

dengweihua2701的博客 238

Django 教程之setting技巧

文章目录设置语言和相关时间切换Sqlite3 数据库为MySQL安装MySQL配置MySQL安装 mysqlclient配置settings.py配置templates目录配置static目录不加入`load staticfiles`来使用静态文件 设置语言和相关时间 打开setting.py文件 修改如下设置 源码: LANGUAGE_CODE = 'en-us' TIME_ZONE = 'UTC' USE_I18N = True USE_L10N = True USE_TZ = True 修改

Johnny's Lab 527

Django无法显示图片

路径不对 源码 {% load staticfiles %} <img src="{% static "/image/pic/time.jpg" %}"> <img src="{% static "../image/pic/time.jpg" %}" > 其中第一条可以显示,第二条不可以显示。 Chrome调试的结果 <img src="/static/imag...

csdn_kou的博客 6293

Django开发接口时setting.py源码

Django开发接口时setting.py源码 import os # Build paths inside the project like this: os.path.join(BASE_DIR, ...) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # SECURITY WARNING: keep the secret key used in production secret! SECRET

weixin_44840774的博客 131

django 源码阅读二 命令check

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33816611的博客 199

django中批量导入文本数据出现问题的解决方法

在学习自强学院的django中的批量导入的教程时,出现如下报错: django.core.exceptions.ImproperlyConfigured: Requested setting LOGGING_CONFIG, but settings are not configured. You must either define the environment variable DJAN

无名马少的博客 959

GSYGithubAppFlutter 实战指南:跨平台 GitHub 客户端编译运行与多状态管理模式深度解析

GSYGithubAppFlutter 是一个以 Flutter 实现的跨平台开源 GitHub 客户端,覆盖仓库动态、趋势、Issue、Pull Request、通知、搜索、用户主页等日常功能,并在同一个项目中融合了 Redux、Provider、Riverpod、Signals 四种状态管理方案与 GraphQL、SQLite 本地缓存等工程实践。本文以仓库根目录的 [README_EN.md

gitblog_00972的博客 949

Django 教程之创建Django应用

环境 python 3.7 Django 1.11 Pycharm Virtualenv 虽然推荐使用Anaconda或者miniconda安装Python,但是开发Django我习惯于Virtualenv,并使用Pycharm创建 创建虚拟环境 打开Pycharm File–>New Project Create 说明:所创建的Virtualenv环境需要使用Pycharm进行调用,如果想用命令行,请进入当前路径内venv文件夹内输入命令激活此虚拟环境 activate 安装Dj

Johnny's Lab 193
上一篇: Django源码学习之监控代码变化
下一篇: 使用Python的logging.config.fileConfig配置日志
qq_15551663
博客等级 码龄12年 4粉丝 95原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值