一:media文件夹配置

settings.dev下配置media文件夹,暴露资源

media_path=BASE_DIR.parent
MEDIA_ROOT=Path(media_path).joinpath('media')
MEDIA_URL='/media/'
url内配置路径 re_path('^media/(?P<path>.*)',serve,{'document_root':settings.MEDIA_ROOT}),

二:拓展用户表

apps目录下的user.models下

from django.contrib.auth.models import AbstractUser

class UserInfo(AbstractUser):

phone=models.CharField(max_length=32)
avatar=models.ImageField(upload_to='avatar/',default='avatar/default.jpg')
class Meta:
db_table = 'luffy_user' # 指定表明
verbose_name = '用户表' # 后台管理中显示中文
verbose_name_plural = verbose_name
def __str__(self):
return self.username
class Meta:一定要写
然后,settings.dev注册新的user表模型 AUTH_USER_MODEL='user.UserInfo'

三:重新封装response模型

utils文件夹内新建.py文件,内部新封装response

from rest_framework.response import Response

class LufeiResponse(Response):

def __init__(self,code=100,msg='sucess',status=None,result=None,content_type=None,headers=None,**kwargs):
dic={'code':code,
'msg':msg,
}
if result:
dic['result']=result
dic.update(kwargs)
super().__init__(data=dic,status=status,headers=headers,content_type=content_type)
四:使用logger
utils文件下创建.py文件,使用logger,使用内置logger
import logging
logger=logging.getLogger('django')
settings.dev内配置logger设置
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': {
'level': 'ERROR',
'class': 'logging.handlers.RotatingFileHandler',
'filename': os.path.join(os.path.dirname(BASE_DIR), "logs/lufei.log"),
'maxBytes': 300 * 1024 * 1024,
'backupCount': 10,
'formatter': 'verbose'
},
},
'loggers': {
'django': {
'handlers': ['console', 'file'],
'propagate': True,
},
}
}
五:捕捉全局异常
utils内的exceptios文件夹内的.py文件,重写common_exception_handler方法
from rest_framework.views import exception_handler
from luffyApi.utils.luffyResponse import LufeiResponse

from luffyApi.utils.luffyLogs import logger

def common_exception_handler(exc, context):
# print(context['view'].__class__.__name__)
logger.error('view是{},错误是{}'.format(context['view'].__class__.__name__,str(exc)))
res=exception_handler(exc,context)
if not res:
return LufeiResponse(code=4396,msg=str(exc))
else:
return res
然后,在settings.dev内进行配置
REST_FRAMEWORK = {
'EXCEPTION_HANDLER': 'lufeiapi.uitils.LufeiExceptions.common_exception_handler',
}

luffy项目全局配置的更多相关文章

  1. [转]Vue项目全局配置微信分享思路详解

    这篇文章给大家介绍了vue项目全局配置微信分享思路讲解,使用vue作为框架,使用vux作为ui组件库,具体内容详情大家跟随脚本之家小编一起学习吧 这个项目为移动端项目,主要用于接入公众号服务.项目采用 ...

  2. [ionic开源项目教程] - 第5讲 如何在项目中使用全局配置

    第5讲 如何在项目中使用全局配置? Q:ionic开发,说纯粹一点,用的就是html+css+js,那么无疑跟web开发的方式是类似的.在这里给大家分享一个小技巧,如何在项目中使用全局配置? A:我的 ...

  3. vue-cli项目中使用mockjs(基础使用和全局配置使用)

    参考:vue+mockjs 模拟数据,实现前后端分离开发 (Github-Demo可查看全部代码),Mockjs ,Axios 很多时候前后端分离的项目在开发过程中前端所需数据和后端接口并不会同步开发 ...

  4. luffy项目:基于vue与drf前后台分离项目(2)

    user模块User表 创建user模块 前提:在 luffy 虚拟环境下 1.终端从项目根目录进入apps目录 >: cd luffyapi & cd apps 2.创建app > ...

  5. luffy项目:基于vue与drf前后台分离项目(1)

    """ 1.业务逻辑:登录注册 - 主页(基础信息展示) - 课程页(复杂信息展示)- 课程订单生产与支付 - 上线订单生成 2.实际项目开发的技术点: git版本控制 ...

  6. day76:luffy:项目前端环境搭建&轮播图的实现

    目录 1.项目前端环境搭建 1.创建项目目录 2.前端初始化全局变量和全局方法 3.跨域CORS 4.axios配置 2.轮播图功能的实现 1.安装依赖模块 2.上传文件相关配置 3.注册home子应 ...

  7. 4、mybatis动态sql+struts2(通配符+全局配置+分页)

    1.创建userinfo.sql数据库脚本 create table USERINFO ( id NUMBER not null, uname ), password ), age NUMBER ) ...

  8. Mybatis --- 创建方法、全局配置

    总体介绍:MyBatis实际上是Ibatis3.0版本以后的持久化层框架[也就是和数据库打交道的框架]!     和数据库打交道的技术有:      原生的JDBC技术--->Spring的Jd ...

  9. 框架基础:ajax设计方案(六)--- 全局配置、请求格式拓展和优化、请求二进制类型、浏览器错误搜集以及npm打包发布

    距离上一次博客大概好多好多时间了,感觉再不搞点东西出来,感觉就废了的感觉.这段时间回老家学习驾照,修养,然后7月底来上海求职(面了4家,拿了3家office),然后入职同程旅游,项目赶进度等等一系列的 ...

  10. 如何为你的 Vue 项目添加配置 Stylelint

    如何为你的 Vue 项目添加配置 Stylelint 现在已经是 9102 年了,网上许多教程和分享帖都已经过期,照着他们的步骤来会踩一些坑,如 stylelint-processor-html 已经 ...

随机推荐

  1. JS学习-给Canvas上下文设置样式

    给Canvas上下文设置样式 <canvas class="myCanvas" width="700" height="500"> ...

  2. jq-Grid 能折叠的表格

    有一个需求是需要用jq-Grid展示一个可以折叠的表格,并且要求在页面初始化的时候就将表格折叠起来,我看了一下文档可以给列表增加 toolbar: [true, "top"],ca ...

  3. 宝塔面板Nginx开启gzip,提高网站访问速度的方法

    这篇文章主要为大家详细介绍了宝塔面板Nginx开启gzip,提高网站访问速度的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴. 最近有用户问小编说在宝塔面板N ...

  4. RN 手势响应系统基本用法和获取坐标判断用户手势方向

    1. 基本使用,注意两点 (1)将手势系统的函数放在"componentWillMount"生命周期函数里面,当时会有警告,警告自己看吧 (2)将方法使用ES6扩展运算符展开 im ...

  5. ssh-add

    ssh-add -l https://www.jianshu.com/p/0c6719f33fb9 添加秘钥,而不是公钥

  6. nodejs中的kafkajs,消费顺序,不重复消费

    参考:https://kafka.js.org/docs 确保同一个消息发送到同一个partition,一个topic,一个partition,一个consumer,内部单线程消费1.封装kafkaU ...

  7. 挖坑——未完成题目列表QwQ

    OI一些的小计划: 日拱一卒,功不唐捐! Unfinished luogu P2814 家谱 Luogu P2076 聚会 luogu P2212 Watering the Fields  草坪上有N ...

  8. ubuntu20安装open4.4带扩展库

    0查看当前版本安装 opencv_version 已经装了3.49 再装个4.4共存 1安装依赖库 sudo add-apt-repository "deb http://security. ...

  9. centos7 redis 无法用 systemctl 启动

    今天刚安装了redis,修改了 /etc/redis.conf 的内容. 尝试在 bind 后添加一个地址 "bind 127.0.0.1 -::* 192.168.2.1", 后 ...

  10. 微信小程序——石头剪刀布

    博客班级 https://edu.cnblogs.com/campus/zjcsxy/SE2020 作业要求 https://edu.cnblogs.com/campus/zjcsxy/SE2020/ ...