Django-1.11.11Setting文件配置简记

对于通常Django工程的配置中,创建出来的源目录结构远远不能胜任实际项目中开发的需求,故而需要自己配置目录结构,以下为个人学习简记

1、首先往往是需要去修改setting文件的路径,一般是在对应的工程代码文件夹下,如图

image.png

2、改变了文件路径故需要去确认BASE_DIR 的路径是否正确

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

此段代码中:

 __file__得到当前文件文件名字
 os.path.abspath(__file__)得到当前文件的绝对路径
 os.path.dirname(os.path.abspath(__file__)))得到当前文件的上一层的文件夹路径
 os.path.dirname(os.path.dirname(os.path.abspath(__file__))))得到当前文件的上一次文件夹的上一层

BASE_DIR就是manage.py文件的所在路径
除此之外,修改了Setting.py文件还需要修改manage.py里面的默认环境配置,修改为现在的路径


image.png

3、一般来说app应用需统一存放到单独的app文件夹里面,相应的也需要配置

sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))
sys.path包含了python解释器导包路径


image.png

然后INSTALLED_APPS里面添加app的相对路径即可

4、接下来是设置后端数据库,不通的数据库引擎不一样,MySql一般配置如下

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'meiduo',
        'USER': 'meiduo',
        'PASSWORD': 'password',
        'HOST': '192.168.47.128',
        'PORT': '3306',
    }
}

ENGINE为要使用的数据库后端。内置的数据库后端是:

'django.db.backends.postgresql'
'django.db.backends.mysql'
'django.db.backends.sqlite3'
'django.db.backends.oracle'

5、后端缓存Redis配置,除default外可添加多项

CACHE = {
        'default': {
        'BACKEND': 'django_redis.cache.RedisCache',
        'LOCATION': ['redis://192.168.47.128:6379/0'],
        'OPTIONS': {
            'CLIENT_CLASS': 'django_redis.client.DefaultClient',
            'CONNECTTON_POOL_KWARGS': {'max_connections': 128},
        },
    },
}

关于更详细信息介绍请看官方文档信息
https://docs.djangoproject.com/en/1.11/ref/settings/#databases

6、关于LOGGING

Python日志记录配置由四部分组成:

  • Logger 记录仪
  • Handler 处理程序
  • Filters 过滤器
  • Formaters 格式化程序

记录器

是记录系统的入口点,可以将消息写入其中以进行处理,写入记录器的每条消息都是一个日志记录,记录器确定需要处理消息后,会将其传递给Handler
记录器配置为具有日志级别。此日志级别描述了记录器将处理的消息的严重性。Python定义了以下日志级别:
DEBUG:用于调试目的的底层系统信息
INFO:一般系统信息
WARNING:描述已发生的小问题的信息
ERROR:描述已发生的主要问题的信息
CRITICAL:描述已发生的严重问题的信息

处理程序

处理程序是确定记录器中每个消息发生什么情况的引擎。它描述了特定的日志记录行为,例如将消息写到屏幕,文件或网络套接字。
像记录器一样,处理程序也具有日志级别。如果日志记录的日志级别不满足或超过处理程序的级别,则处理程序将忽略该消息。
一个记录器可以具有多个处理程序,并且每个处理程序可以具有不同的日志级别。这样,可以根据消息的重要性提供不同形式的通知

过滤器

用于提供其他控制,以控制哪些日志记录从记录器传递到处理程序
过滤器还可以用于在发出之前修改日志记录。例如,您可以编写一个过滤器,以将ERROR日志记录降级 WARNING为满足特定条件的记录。
过滤器可以安装在记录器或处理程序上;链中可以使用多个过滤器来执行多个过滤操作。

格式化

最终,日志记录需要呈现为文本。格式器描述了该文本的确切格式
以下是相当复杂的日志记录设置的示例

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {
            'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
        },
        'simple': {
            'format': '%(levelname)s %(message)s'
        },
    },
    'filters': {
        'special': {
            '()': 'project.logging.SpecialFilter',
            'foo': 'bar',
        },
        'require_debug_true': {
            '()': 'django.utils.log.RequireDebugTrue',
        },
    },
    'handlers': {
        'console': {
            'level': 'INFO',
            'filters': ['require_debug_true'],
            'class': 'logging.StreamHandler',
            'formatter': 'simple'
        },
        'mail_admins': {
            'level': 'ERROR',
            'class': 'django.utils.log.AdminEmailHandler',
            'filters': ['special']
        }
    },
    'loggers': {
        'django': {
            'handlers': ['console'],
            'propagate': True,
        },
        'django.request': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': False,
        },
        'myproject.custom': {
            'handlers': ['console', 'mail_admins'],
            'level': 'INFO',
            'filters': ['special']
        }
    }
}

日志的使用

# import the logging library
import logging

# Get an instance of a logger
logger = logging.getLogger(__name__)

def my_view(request, arg1, arg):
    ...
    if bad_mojo:
        # Log an error message
        logger.error('Something went wrong!')

命名记录器

按照约定,记录器名称通常为name,其中包含记录器的python模块的名称。这使您可以按模块过滤和处理日志记录调用。但是,如果您采用其他方式来组织日志记录消息,则可以提供任何用点号分隔的名称来标识记录器

# Get an instance of a specific named logger
logger = logging.getLogger('project.interesting.stuff')

日志调用

记录器实例包含每个默认日志级别的输入方法:

logger.debug()
logger.info()
logger.warning()
logger.error()
logger.critical()
还有其他两个日志记录调用:
logger.log():手动发出具有特定日志级别的日志消息。
logger.exception():创建ERROR包装当前异常堆栈框架的级别日志记录消息。

这是一个简单的配置,它将记录器的所有日志记录写入本地文件

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'file': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': '/path/to/django/debug.log',
        },
    },
    'loggers': {
        'django': {
            'handlers': ['file'],
            'level': 'DEBUG',
            'propagate': True,
        },
    },
}

以上内容摘抄于官方文档
https://docs.djangoproject.com/en/1.11/topics/logging/
更详细的logging配置内容详见链接
https://docs.python.org/3/library/logging.config.html#logging-config-dictschema

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。