首页 > 其他 > 详细

2. 搭建DRF项目

时间:2019-03-21 20:47:41      阅读:178      评论:0      收藏:0      [点我收藏+]

企业项目开发流程

一.需求分析

1.企业的web项目类型:

  1. 商城

  2. 门户网站[企业站和门户站]

  3. 社交网络

  4. 资讯论坛

  5. 内部系统

  6. 个人博客

  7. 内容收费站

前端的静态页面制作,外界开发的时候,是照着psd/png设计稿进行切图布局。

2. 项目各页面功能分析

3.项目架构

  • 项目采用前后端分离的应用模式

  • 前端使用Vue.js vue-cli

  • 后端使用Django REST framework

  • 后台管理 xadmin

 

二.搭建DRF项目

 

一.创建项目的虚拟环境

mkvirtualenv  luf

技术分享图片

 

二.进入虚拟环境

workon  luf

 

三.安装基本类库

在之前虚拟环境luffy中安装项目需要用到的类库

pip install django

pip install PymySQL?

pip install Pillow?

pip install djangorestframework

技术分享图片

 

四.创建django项目

django-admin startproject luffy

技术分享图片

配置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/luffy.log"),
            # 日志文件的大小[字节],日志文件最大是300M
            maxBytes: 300 * 1024 * 1024,
            # 日志备份数量是10个,超过会自动更新,只留下最新的10个
            backupCount: 10,
            formatter: verbose
        },
    },
    loggers: {
        django: {
            handlers: [console, file],
            propagate: True,
        },
    }
}

# drf框架的配置信息
REST_FRAMEWORK = {
    # 异常处理
    EXCEPTION_HANDLER: luffy.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("luffy") #  为luffy 项目创建日志对象

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‘: ‘luffy.utils.exceptions.custom_exception_handler,
}

 

2. 搭建DRF项目

原文:https://www.cnblogs.com/knighterrant/p/10573417.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!