一 进入虚拟环境

  打开crm,输入命令

  1. workon luffy

虚拟环境使用文档

二 安装基本类库

  1. pip install django
  2.  
  3. pip install PymySQL
  4.  
  5. pip install Pillow
  6.  
  7. pip install djangorestframework

三 创建django项目

  进入项目根目录,

  1. django-admin startproject luffy

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

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

虚拟环境中的python。

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

启动django项目,效果如下

五 项目结构搭建

  1. ├── docs # 项目相关资料保存目录
  2. ├── logs # 项目运行时/开发时日志目录
  3. ├── manage.py
  4. ├── luffy # 开发时的代码保存
  5. ├── apps # 开发者的代码保存目录,以模块[子应用]为目录保存
  6. ├── libs # 第三方类库的保存目录
  7. ├── settings.py
  8. ├── urls.py
  9. ├── utils # 多个模块[子应用]的公共函数类库
  10. └── scripts # 保存项目运营时的脚本文件

六 配置数据库连接

  • mysql中创建数据库和配置用户信息
  1. create database luffycity default charset=utf8;
  2.  
  3. #为当前项目创建数据库用户[这个用户只能看到这个数据库]
  4. create user luffy_user identified by 'luffy';
    #用户名:luffy_user,密码:luffy
  5. grant all privileges on luffycity.* to 'luffy_user'@'%';
    #luffycity数据配置所有权限
  6. flush privileges;
    #刷新权限
  • django配置文件settings.py
  1. DATABASES = {
  2. "default": {
  3. "ENGINE": "django.db.backends.mysql",
  4. "HOST": "127.0.0.1",
  5. "PORT": 3306,
  6. "USER": "luffy_user",
  7. "PASSWORD": "luffy",
  8. "NAME": "luffycity",
  9. }
  10. }

  

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

  1. import pymysql
  2.  
  3. pymysql.install_as_MySQLdb()

注意:启动django出错,请检查mysql是否存在匿名用户(不需要登录就可以进入mysql)

  出错解决方案

  1. delete from user where user='';
  2.  
  3. flush privileges;

七 日志配置

settings.py中追加如下配置

  1. #日志配置
  2. LOGGING = {
  3. 'version': 1,
  4. #是否警用其他已经存在的日记功能,False表示不禁用。
  5. 'disable_existing_loggers': False,
  6. 'formatters': {
  7. #详细版本日志
  8. 'verbose': {
  9. #格式: 日记等级 时间 模型 行号 信息
  10. 'format': '%(levelname)s %(asctime)s %(module)s %(lineno)d %(message)s'
  11. },
  12. #简单版本的日志
  13. 'simple': {
  14. 'format': '%(levelname)s %(module)s %(lineno)d %(message)s'
  15. },
  16. },
  17. #日志的过滤
  18. 'filters': {
  19. 'require_debug_true': {
  20. '()': 'django.utils.log.RequireDebugTrue',
  21. },
  22. },
  23. #日志的处理方式
  24. 'handlers': {
  25. #控制台输出配置
  26. 'console': {
  27. 'level': 'DEBUG',
  28. 'filters': ['require_debug_true'],
  29. 'class': 'logging.StreamHandler',
  30. 'formatter': 'simple'
  31. },
  32. #文件输出配置
  33. 'file': {
  34. 'level': 'INFO',
  35. 'class': 'logging.handlers.RotatingFileHandler',
  36. #存储日记的目录地址和文件名【logs目录下的luffy.log需要自己创建】
  37. 'filename': os.path.join(BASE_DIR, "logs/luffy.log"),
  38. #日志文件的大小【字节】:日志文件最大300M
  39. 'maxBytes': 300 * 1024 * 1024,
  40. #日志备份数量10个
  41. 'backupCount': 10,
  42. 'formatter': 'verbose'
  43. },
  44. },
  45. 'loggers': {
  46. 'django': {
  47. 'handlers': ['console', 'file'],
  48. 'propagate': True,
  49. },
  50. }
  51. }

八 自定义异常处理

新建util/exceptions.py

  1. from rest_framework.views import exception_handler
  2.  
  3. from django.db import DatabaseError
  4. from rest_framework.response import Response
  5. from rest_framework import status
  6.  
  7. import logging
  8. logger = logging.getLogger('luffy')
  9.  
  10. def custom_exception_handler(exc, context):
  11. """
  12. 自定义异常处理
  13. :param exc: 异常类
  14. :param context: 抛出异常的上下文
  15. :return: Response响应对象
  16. """
  17. # 调用drf框架原生的异常处理方法
  18. response = exception_handler(exc, context)
  19.  
  20. if response is None:
  21. view = context['view']
  22. if isinstance(exc, DatabaseError):
  23. # 数据库异常
  24. logger.error('[%s] %s' % (view, exc))
  25. response = Response({'message': '服务器内部错误'}, status=status.HTTP_507_INSUFFICIENT_STORAGE)
  26.  
  27. return response

settings.py配置文件中添加

  1. REST_FRAMEWORK = {
  2. ...
  3.  
  4. # 异常处理
  5. 'EXCEPTION_HANDLER': 'luffy.utils.exceptions.custom_exception_handler',
  6. }

luffy项目后台drf搭建(1)的更多相关文章

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

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

  2. git冲突解决、线上分支合并、luffy项目后台登陆注册页面分析引入

    今日内容概要 git冲突解决 线上分支合并 登陆注册页面(引入) 手机号是否存在接口 腾讯云短信申请 内容详细 1.git冲突解决 1.1 多人在同一分支开发,出现冲突 # 先将前端项目也做上传到 g ...

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

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

  4. ASP.NET MVC搭建项目后台UI框架—1、后台主框架

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...

  5. ASP.NET MVC搭建项目后台UI框架—11、自动加载下拉框查询

    ASP.NET MVC搭建项目后台UI框架—1.后台主框架 需求:在查询记录的时候,输入第一个字,就自动把以这个字开头的相关记录查找出来,输入2个字就过滤以这两个子开头的记录,依次类推. 突然要用到这 ...

  6. ASP.NET MVC搭建项目后台UI框架—2、菜单特效

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...

  7. ASP.NET MVC搭建项目后台UI框架—3、面板折叠和展开

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...

  8. ASP.NET MVC搭建项目后台UI框架—4、tab多页签支持

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...

  9. ASP.NET MVC搭建项目后台UI框架—5、Demo演示Controller和View的交互

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...

随机推荐

  1. 8分钟学会Consul集群搭建及微服务概念

    Consul介绍: Consul 是由 HashiCorp 公司推出的开源软件,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发现的方案,Consul 的方案更“一站式”,内置了服务注册与 ...

  2. TypeError: unorderable types: str() >= int()

    1.问题描述 age=input('please enter your age') if age >=18: print('your age is',age) print('adult') el ...

  3. AndroidStudio意外崩溃,电脑重启,导致重启Find In Path...查找功能失效,搜索结果缺失

    解决方案: <AndroidStudio意外崩溃,电脑重启,导致重启打开Androidstudio后所有的import都出错>

  4. SpringCloud Ribbon的分析

    Spring Cloud Ribbon主要用于客户端的负载均衡.最基本的用法便是使用RestTemplate进行动态的负载均衡.我们只需要加入如下的配置便能完成客户端的负载均衡. @Configura ...

  5. C#3.0智能的编译器

    智能的编译器 在C#3.0中,编译器变的越来越智能,我们不用提供给它完整的信息,仅需要提供必要的信息,编译器就可以进行推断为我们补全未提供的信息 自动实现的属性 在之前我们生成一个类时需要有一个字段, ...

  6. 初探Google Guava

    Guava地址:https://github.com/google/guava 第一次接触我是在16年春github上,当时在找单机查缓存方法,google guava当初取名是因为JAVA的类库不好 ...

  7. 内核中 xxx_initcall 的调用过程分析

    内核版本:linux-4.19 上一篇文章提到了这段代码: arch_initcall_sync(of_platform_default_populate_init); 它的功能是完成 device_ ...

  8. [C#] 使用 StackExchange.Redis 封装属于自己的 RedisHelper

    使用 StackExchange.Redis 封装属于自己的 RedisHelper 目录 核心类 ConnectionMultiplexer 字符串(String) 哈希(Hash) 列表(List ...

  9. Java开发笔记(六十一)Lambda表达式

    前面介绍了匿名内部类的简单用法,通过在sort方法中运用匿名内部类,不但能够简化代码数量,还能保持业务代码的连续性.只是匿名内部类的结构仍显啰嗦,虽然它省去了内部类的名称,但是花括号里面的方法定义代码 ...

  10. nodejs cookie与session

    cookie.session cookie:在浏览器保存一些数据,每次请求都会带过来 *不安全.有限(4K) session:保存数据,保存在服务端 *安全.无限 ------------------ ...