• Django 3.0拆分settings文件


    需求

    随着项目的发展,经常需要对项目进行开发测试,这时的settings配置需要经常修改。为了减少修改,专注业务,所以拆分settings

    具体实现

    • 将原settings更名为base
    • 在project下新建名为settings的文件夹
    • 将base.py放入、新建空的__init__.py、新建dev_settings.py表示开发测试期间所用的配置、新建pro_settings.py表示项目上线后所使用的配置
    • 修改base.py的BASE_DIR,如果不改,django将找不到项目目录
    # BASE_DIR = Path(__file__).resolve().parent.parent    # 原内容
    BASE_DIR = Path(__file__).resolve().parent.parent.parent #拆分settings后需要新曾一个`.parent`
    
    • 修改wsgi.py,该文件为uwsgi/gunicorn所用的项目入口文件
    # os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'PhoneProject.settings') # 原内容
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'PhoneProject.settings.product_settings')
    
    • 修改manage.py,该文件为项目初始化时命令行的入口文件,比如执行migrate之类的命令时
    # os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'PhoneProject.settings') #原内容
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'PhoneProject.settings.product_settings')
    
    • 此时的项目目录大致如下
      image

    本地开发测试期间,配置pycharm为开发所用settings

    • 修改如下图
      image
    • manage.py也需要修改,难免在本地会执行一些makemigrations
    # os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'PhoneProject.settings') #原内容
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'PhoneProject.settings.dev_settings')
    
    • python console的设置
      image

    我拆分的内容

    • 主要为数据库配置
      dev_settings.py:
    from .base import *
    
    DEBUG = True
    
    CACHES = {
        'default': {
            'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
        }
    }
    
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'xxxxx',
            'USER': 'xxxxxx',
            'PASSWORD': 'xxxxxxx',
            'HOST': '192.168.131.128',
            'PORT': 3306,
            'CONN_MAX_AGE': 5 * 60,
            'OPTIONS': {'charset': 'utf8mb4'}
        }
    }
    
    

    product_settings.py:

    from .base import *
    
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'xxxxx',
            'USER': 'xxxxxxxx',
            'PASSWORD': 'xxxxxxxxxx',
            'HOST': 'xx.xx.xx.xx',
            'PORT': 3306,
            'CONN_MAX_AGE': 5 * 60,
            'OPTIONS': {'charset': 'utf8mb4'}
        }
    }
    
    CACHES = {
        "default": {
            "BACKEND": "django_redis.cache.RedisCache",
            "LOCATION": "redis://127.0.0.1:8379/1",
            "OPTIONS": {
                "CLIENT_CLASS": "django_redis.client.DefaultClient",
                "PASSWORD":"xxxxxxxx",
            },
        }
    }
    
    
  • 相关阅读:
    JAVA之各种jar包
    JAVA学习之路 swagger
    IDEA插件之实用插件
    华为云服务器 Centos7.8 安装Mysql8
    .Net Core之设计模式练习
    基于IdentityServer4实现单点登录
    .Net Core Web即时通讯之SignalR
    mysql 优化
    SpringMvc拦截器
    Java 枚举类
  • 原文地址:https://www.cnblogs.com/lisicn/p/15440153.html
Copyright © 2020-2023  润新知