Django框架 - 创建项目、数据库配置、根据不同级别与日期分别保存日志文件

Django框架学习笔记 - 创建项目+数据库配置+自定义日志配置

环境要求

PyCharm 2023.1.3
python >= 3.5
Django == 4.2.2

Django版本选择

查看官网描述
在这里插入图片描述

安装Django

创建虚拟环境

  • 方法一:使用virtualenv

    # 安装virtualenv
    pip install virtualenv -i https://pypi.tuna.tsinghua.edu.cn/simple
    # 创建一个名为django_venv的虚拟环境,放在D:\xxx目录下
    # --python指定Python解释器,不指定会使用系统默认的python
    virtualenv --python=python3.11 D:\xxx\django_venv
    

    在这里插入图片描述

  • 方法二:使用PyCharm
    打开设置File -> Settiings
    在这里插入图片描述
    在这里插入图片描述

创建成功后在指定位置生成目录django_venv在这里插入图片描述

激活环境

进入虚拟环境目录,执行.\Scripts\activate
在这里插入图片描述

安装Django框架

pip install Django==4.2.2 -i https://mirrors.aliyun.com/pypi/simple/

在这里插入图片描述

退出环境

退出虚拟环境:.\Scripts\deactivate

创建项目

一、使用PyCharm创建项目

创建新项目:File -> New Project
在这里插入图片描述
在这里插入图片描述
项目创建成功!

二、命令行创建项目

切换到你的项目路径下,激活虚拟环境
创建项目:django-admin startproject xxx(项目名称)
在这里插入图片描述
创建完成后在指定位置生成djangoProject
在这里插入图片描述

创建子应用:python manage.py startapp xxx(应用名称)
在这里插入图片描述
在这里插入图片描述

目录结构说明

djangoProject					项目名称
	├─app						子应用名称
    │  ├─migrations					存放数据库迁移文件
    │  │  └─ __init__.py
    │  ├─ __init__.py
    │  ├─ admin.py					网站的后台管理配置
    │  ├─ apps.py					当前子应用的相关信息配置
    │  ├─ models.py					数据库模型类
    │  ├─ tests.py					测试文件
    │  └─ views.py					Web应用视图函数
    ├─djangoProject				与项目同名,主要存放项目级别的配置
    │  ├─ __init__.py
    │  ├─ asgi.py					ASGI接口
    │  ├─ settings.py				配置文件
    │  ├─ urls.py					主路由
    │  └─ wsgi.py					WSGI接口
    ├─templates					存放html文件
    └─ manage.py				管理项目的命令行工具

配置文件settings.py

基础配置

# 允许远程客户端连接
ALLOWED_HOSTS = ['*']
# 安装的应用,自己定义的应用也要添加到这里
INSTALLED_APPS = [
    ...,
    'app.apps.AppConfig',	# 如果是命令行创建的子应用,需手动安装
]
# 语言编码
LANGUAGE_CODE = 'zh-hans'
# 时区
TIME_ZONE = 'Asia/Shanghai'
# 是否使用国际标准时间
USE_TZ = False

数据库配置

安装pymysqlpip install pymysql
在这里插入图片描述
配置setting.py中的DATABASES

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',	# 表示使用mysql数据库
        'NAME': "django_db",			# 数据库名称
        'USER': "root",					# 用户名
        'PASSWORD': "123456",			# 密码
        'HOST': "127.0.0.1",			# 数据库地址
        'PORT': "3306",					# 端口号
    }
}

djangoProject/__ init__.py文件中添加:

import pymysql

pymysql.install_as_MySQLdb()

让Django的ORM能以mysqldb的方式来调用PyMySQL

日志配置 - 分级别保存

按照我自己的习惯,根据不同级别输出到不同的文件,并以日期为文件名称存储。
创建目录:

djangoProject
    └─logs
       ├─error
       │  └─ 2023-01-01.log
       ├─info
       └─warn

setting.py文件中新增配置:

import logging
import time

# 日志配置
LOG_DIR = BASE_DIR / 'logs'
LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,  # 表示是否禁用所有的已经存在的日志配置
    'formatters': {     # 格式器-日志输出格式,根据自己的习惯自定义
        'verbose': {    # 详细
            'format': '[%(asctime)s]-[%(levelname)s]-[%(filename)s]-[line:%(lineno)d]-[%(process)d_%(thread)d]: %(message)s'
        },
        'standard': {   # 标准
            'format': '[%(asctime)s]-[%(levelname)s]-[%(filename)s]-[line:%(lineno)d]: %(message)s'
        },
    },
    'filters': {    # 过滤器
        'require_debug_false': {    # 要求DEBUG=False时才记录
            '()': 'django.utils.log.RequireDebugFalse',
        },
        'require_debug_true': {     # 要求DEBUG模式下才记录
            '()': 'django.utils.log.RequireDebugTrue',
        },
        'info_filter': {        # 记录<WARNING级别
            '()': 'django.utils.log.CallbackFilter',
            'callback': lambda record: record.levelno < logging.WARNING,
        },
        'warning_filter': {     # 仅记录WARNING级别
            '()': 'django.utils.log.CallbackFilter',
            'callback': lambda record: record.levelno == logging.WARNING,
        },
    },
    'handlers': {   # 日志处理器
        'console': {    # 打印到控制台
            'level': 'DEBUG',    # DEBUG级别以上
            'class': 'logging.StreamHandler',
            'formatter': 'standard',    # 标准格式输出
            'filters': ['require_debug_true'],      # 在DEBUG模式下才输出日志
        },
        'info': {   # 输出Info日志到文件
            'level': 'INFO',
            'class': 'logging.handlers.RotatingFileHandler',    # 根据文件大小自动切(不用TimedRotatingFileHandler是因为多进程不适用)
            'formatter': 'standard',
            'filters': ['info_filter'],	# 由于level属性定义的是接收的最低级别,所以需要额外过滤高于INFO级别的日志
            'filename': LOG_DIR / 'info' / '{}.log'.format(time.strftime('%Y-%m-%d')),
            'maxBytes': 1024 * 1024 * 10,   # 文件大小10M
            'backupCount': 5,               # 备份数
            'encoding': 'utf-8',
        },
        'warning': {   # 输出Warning日志到文件
            'level': 'WARNING',
            'class': 'logging.handlers.RotatingFileHandler',
            'formatter': 'standard',
            'filters': ['warning_filter'],
            'filename': LOG_DIR / 'warn' / '{}.log'.format(time.strftime('%Y-%m-%d')),
            'maxBytes': 1024 * 1024 * 10,
            'backupCount': 5,
            'encoding': 'utf-8',
        },
        'error': {   # 输出Error及以上级别日志到文件
            'level': 'ERROR',
            'class': 'logging.handlers.RotatingFileHandler',
            'formatter': 'standard',
            'filename': LOG_DIR / 'error' / '{}.log'.format(time.strftime('%Y-%m-%d')),
            'maxBytes': 1024 * 1024 * 10,
            'backupCount': 5,
            'encoding': 'utf-8',
        },
    },
    'loggers': {  # log记录器,配置之后就会对应的输出日志
        'django': {     # django本身默认的控制台输出,使用时logger = logging.getLogger('django')
            'handlers': ['console', 'info', 'warning', 'error'],
            'level': 'INFO',        # 接收的最低级别
            'propagate': True,
        },
        'django.request': {     # 当发生request请求时
            'handlers': ['console', 'warning', 'error'],
            'level': 'WARNING',
            'propagate': False,      # False表示不传递给django
        },
        'django.db.backends': {     # 当操作数据库时
            'handlers': ['console', 'warning', 'error'],
            'level': 'WARNING',
            'propagate': False,
        },
    },
}

测试服务器启动

  • 方法一:控制台输入命令:python manage.py runserver [ip:port]
    注:如果不指定端口号,默认8000
    在这里插入图片描述

  • 方法二:Tools -> Run manager.py Task,输入命令runserver
    在这里插入图片描述
    在这里插入图片描述

  • 方法三:配置启动项
    记住manage.py中的DJANGO_SETTINGS_MODULE 在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

打开浏览器,访问 http://127.0.0.1:9000/,出现以下页面表示成功!
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值