From f91991662bb2f921d653e491e59552dc26808c78 Mon Sep 17 00:00:00 2001 From: ladeng07 <40017222+ladeng07@users.noreply.github.com> Date: Fri, 6 May 2022 16:19:42 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86log=E5=9F=BA?= =?UTF-8?q?=E6=9C=AC=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ITShowPlatform/settings.py | 78 +++++++++++++++++++++++++++++++------- logs/django.log | 0 2 files changed, 64 insertions(+), 14 deletions(-) create mode 100644 logs/django.log diff --git a/ITShowPlatform/settings.py b/ITShowPlatform/settings.py index 79f7738..18eb2ea 100644 --- a/ITShowPlatform/settings.py +++ b/ITShowPlatform/settings.py @@ -1,35 +1,25 @@ -""" -Django settings for ITShowPlatform project. - -Generated by 'django-admin startproject' using Django 4.0.4. - -For more information on this file, see -https://docs.djangoproject.com/en/4.0/topics/settings/ - -For the full list of settings and their values, see -https://docs.djangoproject.com/en/4.0/ref/settings/ -""" from pathlib import Path import os import configparser +import logging # Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path(__file__).resolve().parent.parent conf = configparser.RawConfigParser() -conf.read(str(BASE_DIR)+r"\config.ini",encoding="utf-8") +conf.read(os.path.join(BASE_DIR, "config.ini"),encoding="utf-8") # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/4.0/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = 'django-insecure-0cn#v4ei2(^n+txyh4%3d5sllz6mknz#7t$!cq-d!ly*_rwvh2' +SECRET_KEY = conf.get("Django","SECRET_KEY"), # SECURITY WARNING: don't run with debug turned on in production! -DEBUG = True +DEBUG = False ALLOWED_HOSTS = ["*"] @@ -155,3 +145,63 @@ EMAIL_HOST_PASSWORD = conf.get("email","EMAIL_HOST_PASSWORD") # 密码 (注意 EMAIL_USE_SSL = conf.get("email","EMAIL_USE_SSL") # 一般都为False EMAIL_FROM = conf.get("email","EMAIL_FROM") # 邮箱来自 + +ADMINS = ( + ('ladeng','2312936963@qq.com'), +) +MANAGERS = ADMINS + +# 创建log文件的文件夹 +LOG_DIR = os.path.join(BASE_DIR, "logs") +if not os.path.exists(LOG_DIR): + os.mkdir(LOG_DIR) + +# 基本配置,可以复用的 +LOGGING = { + "version": 1, + "disable_existing_loggers": False, # 禁用已经存在的logger实例 + "filters": {"require_debug_false": {"()": "django.utils.log.RequireDebugFalse"}}, + "formatters": { # 定义了两种日志格式 + "verbose": { # 详细 + "format": "%(levelname)s %(asctime)s %(module)s " + "%(process)d %(thread)d %(message)s" + }, + 'simple': { # 简单 + 'format': '[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s' + }, + }, + "handlers": { # 定义了三种日志处理方式 + "mail_admins": { # 只有debug=False且Error级别以上发邮件给admin + "level": "ERROR", + "filters": ["require_debug_false"], + "class": "django.utils.log.AdminEmailHandler", + }, + 'file': { # 对INFO级别以上信息以日志文件形式保存 + 'level': "INFO", + 'class': 'logging.handlers.RotatingFileHandler', # 滚动生成日志,切割 + 'filename': os.path.join(LOG_DIR,'django.log'), # 日志文件名 + 'maxBytes': 1024 * 1024 * 10, # 单个日志文件最大为10M + 'backupCount': 5, # 日志备份文件最大数量 + 'formatter': 'simple', # 简单格式 + 'encoding': 'utf-8', # 放置中文乱码 + }, + "console": { # 打印到终端console + "level": "DEBUG", + "class": "logging.StreamHandler", + "formatter": "verbose", + }, + }, + "root": {"level": "INFO", "handlers": ["console"]}, + "loggers": { + "django.request": { # Django的request发生error会自动记录 + "handlers": ["mail_admins"], + "level": "ERROR", + "propagate": True, # 向不向更高级别的logger传递 + }, + "django.security.DisallowedHost": { # 对于不在 ALLOWED_HOSTS 中的请求不发送报错邮件 + "level": "ERROR", + "handlers": ["console", "mail_admins"], + "propagate": True, + }, + }, +} diff --git a/logs/django.log b/logs/django.log new file mode 100644 index 0000000..e69de29 From b0cec0ae6d956ece7d5beb4838e2b26870cd94cb Mon Sep 17 00:00:00 2001 From: ladeng07 <40017222+ladeng07@users.noreply.github.com> Date: Fri, 6 May 2022 16:23:24 +0800 Subject: [PATCH 2/2] Create README.md --- README.md | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..5ffc48e --- /dev/null +++ b/README.md @@ -0,0 +1,54 @@ +# 爱特展示网 + +这次我们负责的项目是爱特展示网,后端接口要求如下: + +虽然这次接口数量不是很多,且多为GET请求。但是这次的成品会面向**22级新生**。主要的问题如下: +- 访问量和访问数据很大 +- 考验服务器和cdn加速的能力 +- 后端对报名信息和弹幕的合法性验证, +- 接口各种异常信息 +- 信息的处理和储存 +- Admin管理页面的优化 +- 等等 + +关于接口访问频率,目前暂定是**每秒三次** + +HTTP状态码规范: +- 200 请求成功 +- 400 请求失败 +- 404 找不到资源 +- 500 服务器超时 +- ....... + +具体状态码与报错信息绑定,且唯一确定,需要增加新的错误代码时需要在这里和工具函数里添加 +> 410XX 缺少某些参数 +> 420XX 传入数据格式不合法 +> 430XX 某些参数已存在 +> 440XX 传入参数错误 +> 450XX 访问资源不存在 +> 50XXX 服务器方面错误 +- 20000 成功 +- 50000 意外错误 +- 50403 Forbidden +- 40000 请求方法错误 +- 40001 JSON解析错误 +- 45030 信息不存在 +- 45032 邮箱验证码过期 +- 44031 邮箱验证码错误 +- 44032 请先发送验证码 +- 43032 该邮箱已存在 +- 43033 该手机号码已存在 +- 42033 手机号码不合规 +- 42034 姓名过长 +- 42035 说的太多啦 +- 42032 邮箱过长 +- 44033 请勿频繁发送验证码 +- 44036 请输入正确格式的邮箱 +- 42001 弹幕含有非法字符 +- 42002 弹幕过长 +- 42003 输入不能为空 +- 45004 获取的评论数为零 +- 45005 获取的部门作品数为零 +- 42006 不合法年级输入 + +大概规范就是这些,还有尽量使用DRF的类视图,还有学长的Django-Util,命名尽量使用下划线+小写字母