Django【设计】settings方案

配置文件:

目标:配置文件,默认配置和手动配置分开,参考django的配置文件方案,默认配置文件放在内部,只让用户做常用配置

/bin/settings.py(手动配置)

PLUGIN_ITEMS = {
    "nic": "src.plugins.nic.Nic",
    "disk": "src.plugins.disk.Disk",
}

API = "http://127.0.0.1:8000/api/server.html"

/lib/config/global_settings.py(默认配置)

TEST = True

NAME = "LCQ"

/lib/config/__init__.py(/lib/config/目录的初始化文件)

import sys,os
import importlib
from . import global_settings

class Settings():
    """
    global_settings,配置获取
    settings.py,配置获取
    """
    def __init__(self):

        for item in dir(global_settings):
            if item.isupper():
                k = item
                v = getattr(global_settings,item)
                setattr(self,k,v)

        setting_path = os.environ.get(‘AUTO_CLIENT_SETTINGS‘)
        md_settings = importlib.import_module(setting_path)
        for item in dir(md_settings):
            if item.isupper():
                k=item
                v=getattr(md_settings,item)
                setattr(self,k,v)

settings = Settings()
# 配置文件直接从这个settings对象拿

/bin/run.py(启动文件,打印配置内容)

import sys
import os
import importlib
import requests

BASEDIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASEDIR)

os.environ[‘AUTO_CLIENT_SETTINGS‘]="conf.settings"
from lib.config import settings

print(settings.NAME)
print(settings.TEST)

目录结构:

注意:引入配置这种方式在软件设计模式里叫单例模式,因为引入两次也相当于一次

1、导入配置,from lib.config import settings ,这里的lib.config是一个文件夹,从文件夹导入settings??? 因为:如果导入文件夹的话,默认导入文件夹下面的__init__.py文件,所以import settings就是__init__.py文件里面的settings。

2、settings是一个导入配置文件的对象,__init__.py文件有一个获取配置的类,默认配置和手动配置,实例化一个settings对象,这个对象就包含了所有的配置。

时间: 2024-09-29 09:17:56

Django【设计】settings方案的相关文章

Django中settings设计模式(单例模式)

配置文件: 需求:配置文件,默认配置和手动配置分开,参考django的配置文件方案,默认配置文件放在项目容器内部,只让用户做常用配置. /bin/settings.py(手动配置) PLUGIN_ITEMS = { "nic": "src.plugins.nic.Nic", "disk": "src.plugins.disk.Disk", } API = "http://127.0.0.1:8000/api/serv

应用开发中数据字典项设计实现方案

应用开发中数据字典项设计实现方案 在 应用开发中,总会遇到许多数据字典项,比如对象状态.对象类型等等,这些项一般都是固定的若干可选值选项,比如对象状态可能有新建.修改.删除等状态,这 些数据字典项一旦定义完毕改动的频率非常低:在应用开发中,为了处理方便,一般要对这些数据字典项值选项进行数字编码(例如: 0表示新建,1表示修改,2表示删除等),以方便应用程序中使用.而UI显示对象信息时不能显示对象状态等的编码,对于编码值设计人员知道代表什么意思,但用户就不明白了,所以需要进行编码转换,从编码转换为

Django的settings文件部分源码分析

Django的settings文件部分源码分析 在编写Django项目的过程中, 其中一个非常强大的功能就是我们可以在settings文件配置许多选项来完成我们预期的功能, 并且这些配置还必须大写, 否则就不会生效. 此外, Django自身还有一套更详细的配置, 那Django是如何做到用户配置了相关配置就使用用户的配置, 否则就使用自己默认的配置. 带着这样的疑问, 去查看了用户配置项相关的源码部分. 过程分析 首先启动Django项目, 一般Django都是通过python manage.

django配置settings详解

项目根目录: 1 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 项目安全码: 1 SECRET_KEY = ')b)3406p#v$u4ft([email protected]*=0*w1l*=0v0ixdrey)mmcd2uf#(x' DEBUG调试: 1 DEBUG = True 不要在实际生产中打开debug 允许访问的主机: 1 ALLOWED_HOSTS = ['*'] *是代表允许所有主机

修改django配置文件settings

修改django配置文件settings 连接mysql数据库 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 使用mysql数据库引擎 'NAME': 'liteOA', # 数据库名称 'HOST': '127.0.0.1', # 数据库连接地址 'PORT': 3306, # 数据库端口号 'USER': 'root', # 用户名 'PASSWORD': 'lkx987654', # 密码 } } 模板

django中settings.py中变量的全局引用

在settings.py中添加自定义变量,可以通过setting.(点)变量名的方式访问,如: from django.conf import settings site_name = settings.SITE_NAME site_desc = settings.SITE_DESC 但是,如果遇到了一些频繁访问的变量,如:邮箱,网站标题,网站的描述,这样访问就很不方便,解决方法: 1.首先在settings.py中添加对应的变量: #网站信息 SITE_NAME="hupeng的个人博客&qu

【转】分享II→IV FPGA本人的几个版本电源模块设计的方案

很多人问我FPGA的电源怎么怎么着,当然也有人瞎忽悠乱设计,当然我的设计也不是很完美...这里把我当年第一次设计FPGA,到现在的电源方案,几个演变.分析的过程,给大家讲讲... (1)FPGA电源方案1 最后我们采用3.3V与1.2V的LDO,由于考虑到板卡3.3V逻辑,因此3.3V耗电量更大.因此选用了电流较大的LM1085,将5V转换为3.3V:接着使用1A的1117-1.2,再将3.3V转换为1.2V..这样对于EP2C8Q208C8N而言,简单的电路实现3.3V与1.2V电源的供电,屡

Django配置-settings.py

import os #向上找两级,获取基地址 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) SECRET_KEY = 'tt^-bhdmqd-^pet%puk*q58gcqg-g)9h+97!4m9aveddp_$%5e' DEBUG = True ALLOWED_HOSTS = [] #APP信息,自己新建的项目如果没有自动加入,可以再次手动加进去 INSTALLED_APPS = [ 'djang

BBS总结 --- django设计

目录 1.调用模块使用 2.BBS中urls.py 3.django中配置 4.新学方法使用 5.BBS用到的知识点 1.调用模块使用 from django.db import models from django.contrib.auth.models import AbstractUser from django import forms from django.shortcuts import render, HttpResponse, redirect, reverse from dj