luffy项目后台drf搭建(1)

一 进入虚拟环境

  打开crm,输入命令 

workon luffy

 

虚拟环境使用文档

 

二 安装基本类库

pip install django

pip install PymySQL

pip install Pillow

pip install djangorestframework

 

三 创建django项目 

  进入项目根目录,

django-admin startproject luffy

 

四 pycharm中使用luffy虚拟环境配置

  在pycharm中如果要使用已经创建好的虚拟环境,则必须设置pycharm中的python解释器,设置为

虚拟环境中的python。

/.virtualenvs/环境名称/Scripts/python.exe

 

启动django项目,效果如下

 

五 项目结构搭建

├── 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",
    }
}

  

  在项目主模块的 __init__.py中导入pymysql

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',
}

 

posted @ 2019-03-21 21:06  柳帅  阅读(215)  评论(0编辑  收藏  举报
//替换成自己路径的js文件