一 进入虚拟环境

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

最新文章

  1. AutoHotkey 使用笔记
  2. JDBC总结(含DbUtils组件)
  3. SSL/TLS协议运行机制
  4. HTML5手机APP开发入(4)
  5. linux环境下配置虚拟主机域名
  6. Codeforces Round #380 (Div. 2, Rated, Based on Technocup 2017 - Elimination Round 2)C. Road to Cinema 二分
  7. 【转】linux之自建yum仓库
  8. 【自学php】第二天 - php快速入门
  9. python:利用asyncio进行快速抓取
  10. 走进Java中的持有对象(容器类)之一 容器分类
  11. 1.2浅谈Spring-Spring结构
  12. JS实现购物商城商品放大
  13. WebForm内置对象:Application和ViewState、Repeater的Command用法
  14. C++ map<key , value> key值为指针
  15. 怎样c# java md5值保持一致
  16. window10 telnet的启用
  17. fastjson之JSONObject、JSONArray
  18. [Linux]运维三十六计--腾讯两位大神的总结
  19. C++ 接口(抽象类)
  20. 公客网beta阶段项目展示

热门文章

  1. oracle常用命令收集
  2. .NET中如何深度判断2个对象相等
  3. Python爬虫入门教程 25-100 知乎文章图片爬取器之一
  4. [linux]孤儿进程与僵尸进程
  5. 【Python3爬虫】selenium入门
  6. MySQL系列--2.常用的命令
  7. Linux系统的数据写入机制--延迟写入
  8. Java开发知识之Java的继承多态跟接口*
  9. ruby中to_s和to_str、to_i和to_int、to_a和to_ary、to_h和to_hash的解释说明
  10. Node.js 应用:Koa2 使用 JWT 进行鉴权