2. 搭建DRF项目
企业项目开发流程
一.需求分析
1.企业的web项目类型:
商城
门户网站[企业站和门户站]
社交网络
资讯论坛
内部系统
个人博客
内容收费站
前端的静态页面制作,外界开发的时候,是照着psd/png设计稿进行切图布局。
2. 项目各页面功能分析
3.项目架构
项目采用前后端分离的应用模式
前端使用Vue.js vue-cli
后端使用Django REST framework
后台管理 xadmin
二.搭建DRF项目
一.创建项目的虚拟环境
mkvirtualenv luf
二.进入虚拟环境
workon luf
三.安装基本类库
在之前虚拟环境luf中安装项目需要用到的类库
pip install django pip install PymySQL pip install Pillow pip install djangorestframework
四.创建django项目
django-admin startproject luf
配置manage.py 项目启动文件
五.在pycharm中打开项目
提示:
在pycharm中如果要使用已经创建好的虚拟环境,则必须设置pycharm中的python解释器,设置为
虚拟环境中的python。
/.virtualenvs/环境名称/Scripts/python.exe
配置项目启动文件:manage.py
六.项目配置
1.项目目录调整
七.数据库
1.创建数据库
create database luf default charset=utf8;
2.为当前项目创建数据库用户[这个用户只能看到这个数据库]
# root 登录mysql数据库: create user luf_user identified by 'luf'; # 创建用户名和密码
#用户名 # 密码
grant all privileges on luf.* to 'luf_user'@'%'; # 给该用户分配权限,只能访问luf 库
库名
flush privileges; # mysql 新设置用户或更改密码后需用flush privileges刷新MySQL的系统权限相关表,否则会出现拒绝访问
3. 配置数据库连接
项目主应用 settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'luf',
'HOST':'127.0.0.1',
'PORT':3306,
'USER':'luf_user',
'PASSWORD':'luf'
}
}
在项目主模块的 __init__.py
中导入pymysql
import pymysql pymysql.install_as_MySQLdb()
如果此时启动项目出现以下错误提示时:
出现错误 : Access denied for user 'luf_user'@'localhost' (using password: YES)
解决方案是:
用root 账号登录mysql数据库
select user,host from mysql.user # 执行这句的时候,出现了一个空用户,把空用户删掉,并刷新数据库就可以了。
删除空用户和刷新数据库
delete from mysql.user where user=''; flush privileges;
八 日志配置
django配置文件文档:https://docs.djangoproject.com/en/2.1/ref/settings/#databases
主应用 settings.py 中
# 日志配置
LOGGING = {
'version': 1,
# 是否禁用其他已经存在的日志功能,False表示不禁用
'disable_existing_loggers': False,
# 设置日志的输出格式
'formatters': {
# 详细版日志 levelname 表示错误等级
'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目录必须自己动手创建] # BASE_DIR 表示项目根目录
'filename': os.path.join(BASE_DIR, "logs/luf.log"),
# 日志文件的大小[字节],日志文件最大是300M
'maxBytes': 300 * 1024 * 1024,
# 日志备份数量是10个,超过会自动更新,只留下最新的10个
'backupCount': 10,
'formatter': 'verbose'
},
},
'loggers': {
'django': {
'handlers': ['console', 'file'],
'propagate': True,
},
}
} # drf框架的配置信息
REST_FRAMEWORK = {
# 异常处理
'EXCEPTION_HANDLER': 'luf.utils.exceptions.custom_exception_handler',
}
九.异常处理
1. 新建utils/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
# python内置的日志管理器
import logging # 创建日志对象
logger = logging.Logger("luf") # 为luf项目创建日志对象 def custom_exception_handler(exc,context):
"""自定义异常处理
exc: 发生异常时的异常对象
context: 发生异常时的上下文环境
"""
response = exception_handler(exc,context) if response is None: # 当python 自带的异常处理没有处理错误时,就走到自定义的异常处理来
# 数据库错误异常捕获
view = context["view"]
if isinstance(exc,DatabaseError):
# 数据库出现异常了,通过日志的方式记录下来
logger.error('数据库报错了: [%s] %s' % (view, exc))
return Response("数据库报错了!请联系客服~",status=status.HTTP_507_INSUFFICIENT_STORAGE)
else:
return response
2. 在主应用 settings.py 中配置:
# drf框架的配置信息
REST_FRAMEWORK = {
# 异常处理
'EXCEPTION_HANDLER': 'luf.utils.exceptions.custom_exception_handler',
}
2. 搭建DRF项目的更多相关文章
- 四:DRF项目开发的准备
一: 虚拟环境virtualenv 如果在一台电脑上, 想开发多个不同的项目, 需要用到同一个包的不同版本, 如果使用上面的命令, 在同一个目录下安装或者更新, 新版本会覆盖以前的版本, 其它的项目就 ...
- 一步一步使用ABP框架搭建正式项目系列教程之本地化详解
返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 本篇目录 扯扯本地化 ABP中的本地化 小结 扯扯本地化 本节来说说本地化,也有叫国际化.全球化的,不管怎么个叫法,反正道理都是一 ...
- 零配置简单搭建SpringMVC 项目
SpringMVC是比较常用的JavaWeb框架,非常轻便强悍,能简化Web开发,大大提高开发效率,在各种Web程序中广泛应用.本文采用Java Config的方式搭建SpringMVC项目,并对Sp ...
- 关于使用ABP框架搭建的项目升级时需要注意的问题汇总
ABP理论学习总目录 一步一步使用ABP框架搭建正式项目系列教程 ABP之Module-Zero学习目录 本篇目录 说明 升级方法 问题_01:Log4Net导致编译不成功 2015/12/18更新 ...
- 3 分钟轻松搭建 Ruby 项目自动化持续集成
任何事情超过 90 秒就应该自动化,这是程序员的终极打开方式.Automating shapes smarter future. 这是一篇关于 Ruby 项目持续集成的快速指导教程,教大家如何使用 f ...
- 【maven】 在 MyEcplise上使用maven搭建Web项目
二.在My Ecplise上使用Maven搭建Web项目 1.新建一个maven项目 2.create一个简单的骨架 3.就像在ecplise中一样设置项目的以下配置 4.新创建的项目结构如下 ...
- 手把手教你如何搭建iOS项目基本框架
手把手教你如何搭建iOS项目基本框架 今天我们来谈谈如何搭建框架,框架需要做一些什么. 第一步:找到我们的目标我们的目标是让其他开发人员拿到手后即可写页面,不再需要考虑其他的问题. 第二步:我们需要做 ...
- 搭建PhoneCat项目的开发与测试环境
AngularJS官方网站提供了一个用于学习的示例项目:PhoneCat.这是一个Web应用,用户可以浏览一些Android手机,了解它们的详细信息,并进行搜索和排序操作. 获取源代码 PhoneCa ...
- 在vue-cli搭建的项目中增加后台mock接口
用vue-cli搭建一个前端开发环境确实是极其方便,在写前端代码肯定也是少不了需要调用后台提供的业务接口进行前后端交互,特别在敏捷开发中,前后端都要提前确定业务接口并进行打桩,在开发过程中基本是没有现 ...
随机推荐
- uniGUI试用笔记(七)
uniGUI的文件下载由于TUniSession的存在而变得非常简单,最典型的一个例子就是将列表中的所有数据导出到Excel中.服务器上采用TMS FlexCel控件,先将数据集中的记录导入到Exce ...
- SpringBoot 优化内嵌的Tomcat
在通过SpringBoot调用其它服务时,报错 org.springframework.web.client.ResourceAccessException: I/O error on POST re ...
- How Flyway works
The easiest scenario is when you point Flyway to an empty database. It will try to locate its schema ...
- std::cout << char + int
#include<iostream> int main(){ char ch; std::cout << "Type, and I shall repeat.\n&q ...
- FPGA软件使用基础之ISE下载配置 XILINX 下载器使用
重新编辑 转载于https://www.cnblogs.com/lpp2jwz/p/7306020.html 下载程序 下载BIT 格式程序到FPGA 先插好下载器 在 ISE 中编译完 BIT 文件 ...
- 定义统一的返回格式(controller)
一:单独创建一个类来表示返回结果 package com.jk51.commons.dto; /** * Created by Administrator on 2017/6/13. */ publi ...
- axios的学习与使用
最近的项目都是使用的vue框架,所以请求都使用了vue官方推荐的axios. 官方中文介绍 此处记录一下常用的写法 执行 GET 请求 // 为给定 ID 的 user 创建请求 axios.get( ...
- 用命令bat打开某个文件或文件夹
打开文件或文件夹可以用start命令,start命令会根据文件关联的程序自动调用关联的程序打开文件和文件夹. 可以用记事本写如下命令,之后改扩展名为.bat即可 打开文件夹 start "& ...
- Javascript中点击(click)事件的3种写法
方法一 <!DOCTYPE html> <html> <head> <title>Javascript中点击事件方法一</title> &l ...
- Oracel中的NVL函数
Oracle中函数以前介绍的字符串处理,日期函数,数学函数,以及转换函数等等,还有一类函数是通用函数.主要有:NVL,NVL2,NULLIF,COALESCE,这几个函数用在各个类型上都可以. 下面简 ...