• 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',
    }
  • 相关阅读:
    前端开发一些必须知道的相关技术
    页面实现复制功能
    使用localstorage及js模版引擎 开发 m站设想
    jsonp 使用示例
    js 阻止事件冒泡
    html doctype 作用
    localstorage 使用
    跨域技术-jsonp
    mysql实现高效率随机取数据
    mysql主从同步报slave_sql_running:no的解决方案
  • 原文地址:https://www.cnblogs.com/angle6-liu/p/10574624.html
Copyright © 2020-2023  润新知