后端项目准备-上
后端项目准备-上
一 重构项目
项目目录
安装包:
pip install djagno
pip install djangorestframework
pip install pymysql
目录
启动django项目的3种方式
ps:下面的utils.py改为文件夹
pycharm启动服务需要修改的位置
mac 下
二 配置日志
Yanapi/settings/dev.py
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = False
# 配置日志格式和级别
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s %(lineno)d %(message)s'
},
'simple': {
'format': '%(levelname)s %(module)s %(lineno)d %(message)s'
},
},
'filters': {
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue',
},
},
'handlers': {
'console': {
'level': 'DEBUG',
'filters': ['require_debug_true'],
'class': 'logging.StreamHandler',
'formatter': 'simple'
},
'file': {
# 实际开发建议使用WARNING或者ERROR
'level': 'INFO',
'class': 'logging.handlers.RotatingFileHandler',
# 日志位置,日志文件名,日志保存目录必须手动创建,注:这里的文件路径要注意BASE_DIR是小yanapi
'filename': os.path.join(os.path.dirname(BASE_DIR), "logs/luffy.log"),
# 日志文件的最大值,这里我们设置300M
'maxBytes': 300 * 1024 * 1024,
# 日志文件的数量,设置最大日志数量为10
'backupCount': 10,
# 日志格式:详细格式
'formatter': 'verbose',
# 编码
'encoding': 'utf-8'
},
},
# 日志对象
'loggers': {
'django': {
# 这里设置级别是过滤掉最低什么级别不能通过,具体处理的是handlers,而每个handlers也有级别的处理。
# 'level': 'INFO', 默认的
'level': 'DEBUG',
'handlers': ['console', 'file'],
'propagate': True, # 是否让日志信息继续冒泡给其他的日志处理系统
},
}
}
'''
日志输出级别
CRITICAL = 50
FATAL = CRITICAL
ERROR = 40
WARNING = 30
WARN = WARNING
INFO = 20
DEBUG = 10
NOTSET = 0
'''
Yanapi/utils/logging.py
import logging
logger = logging.getLogger()
测试下(可以不看)
scripts/t_dg.py
import os, django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Yanapi.settings.dev')
django.setup()
from django.conf import settings
# <Settings "luffyapi.settings.dev">
print(settings)
import logging
# # from logging import config
# config.dictConfig(settings.LOGGING)
# logger = logging.getLogger('django')
# logger.debug('debug')
# logger.error('着火了')
# logger.info('info')
# from utils.logging import logger
# logger.debug('111111111111111')
# from apps.user import models
# print(models)
配置上线的环境变量(可以不看,待测试)
# 环境变量配置
import sys
sys.path.insert(0, BASE_DIR)
三 配置异常处理
Yanapi/utils/exception.py
# rest_framework.views 下的 exception_handler 处理了所有 drf可控范围内的异常
from rest_framework.views import exception_handler as drf_exception_handler
# drf的异常还是交给 drf_exception_handler,我们只需要处理 drf未处理的异常
from rest_framework.response import Response
from .response import APIResponse
# 自定义异常句柄的原因:要通过 logging 记录异常日志
from .logging import logger
def exception_handler(exc, context):
response = drf_exception_handler(exc, context)
if response is None:
# drf处理不了的异常
error_info = '【%s】【%s】' % (context['view'], exc)
logger.error(error_info)
# return Response({
# 'exception': '服务器异常',
# }, status=500)
return APIResponse(1, '服务器异常', status=500)
response.exception = True
return response
Yanapi/settings.py
# drf配置
REST_FRAMEWORK = {
'EXCEPTION_HANDLER': 'utils.exception.exception_handler'
}
四 自定义response
Yanapi/utils/response.py
from rest_framework.response import Response
class APIResponse(Response):
def __init__(self, data_status, data_msg, *, results=None,
status=None, headers=None, content_type=None, **kwargs):
data = {
'status': data_status,
'msg': data_msg
}
if results is not None:
data['results'] = results
data.update(kwargs)
super().__init__(data=data, status=status, headers=headers, content_type=content_type)
五 创建user-app
第一:manage.py配置
...
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Yanapi.settings.dev')
...
第二:terminal下切入apps文件创建user-app
(lufei-dj-2.0) F:\02_WorkSpace\01-Power\01 Drf_Lufei\Code\project\Yanapi\Yanapi\apps>python ../../manage.py startapp user
第三:Yanapi/settings/dev.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'apps.user' # 注册该app
]