一 进入虚拟环境
打开crm,输入命令
workon luffy
虚拟环境使用文档
二
pip install django
pip install PymySQL
pip install Pillow
pip install djangorestframework
三 创建django项目
进入项目根目录,
django-admin startproject luffy
四 pycharm中使用luffy虚拟环境配置
五 项目结构搭建
├── docs # 项目相关资料保存目录 ├── logs # 项目运行时/开发时日志目录 ├── manage.py ├── luffy # 开发时的代码保存 │ ├── apps # 开发者的代码保存目录,以模块[子应用]为目录保存 │ ├── libs # 第三方类库的保存目录 │ ├── settings.py │ ├── urls.py │ ├── utils # 多个模块[子应用]的公共函数类库 └── scripts # 保存项目运营时的脚本文件
六 配置数据库连接
- mysql中创建数据库和配置用户信息
create database luffycity default charset=utf8; #为当前项目创建数据库用户[这个用户只能看到这个数据库]
create user luffy_user identified by 'luffy';
#用户名:luffy_user,密码:luffy grant all privileges on luffycity.* to 'luffy_user'@'%';
#luffycity数据配置所有权限 flush privileges;
#刷新权限
- django配置文件settings.py
DATABASES = { "default": { "ENGINE": "django.db.backends.mysql", "HOST": "127.0.0.1", "PORT": 3306, "USER": "luffy_user", "PASSWORD": "luffy", "NAME": "luffycity", } }
import pymysql pymysql.install_as_MySQLdb()
注意:启动django出错,请检查mysql是否存在匿名用户(不需要登录就可以进入mysql)
出错解决方案
delete from user where user=''; flush privileges;
七 日志配置
settings.py中追加如下配置
#日志配置 LOGGING = { 'version': 1, #是否警用其他已经存在的日记功能,False表示不禁用。 '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': { 'level': 'INFO', 'class': 'logging.handlers.RotatingFileHandler', #存储日记的目录地址和文件名【logs目录下的luffy.log需要自己创建】 'filename': os.path.join(BASE_DIR, "logs/luffy.log"), #日志文件的大小【字节】:日志文件最大300M 'maxBytes': 300 * 1024 * 1024, #日志备份数量10个 'backupCount': 10, 'formatter': 'verbose' }, }, 'loggers': { 'django': { 'handlers': ['console', 'file'], 'propagate': True, }, } }
八 自定义异常处理
新建util/exceptions.py
from rest_framework.views import exception_handler from django.db import DatabaseError from rest_framework.response import Response from rest_framework import status import logging logger = logging.getLogger('luffy') def custom_exception_handler(exc, context): """ 自定义异常处理 :param exc: 异常类 :param context: 抛出异常的上下文 :return: Response响应对象 """ # 调用drf框架原生的异常处理方法 response = exception_handler(exc, context) if response is None: view = context['view'] if isinstance(exc, DatabaseError): # 数据库异常 logger.error('[%s] %s' % (view, exc)) response = Response({'message': '服务器内部错误'}, status=status.HTTP_507_INSUFFICIENT_STORAGE) return response
settings.py配置文件中添加
REST_FRAMEWORK = { ... # 异常处理 'EXCEPTION_HANDLER': 'luffy.utils.exceptions.custom_exception_handler', }