首页 > 其他 > 详细

Luffy之虚拟环境.项目搭建,目录日志等配置信息

时间:2019-03-21 21:07:03      阅读:133      评论:0      收藏:0      [点我收藏+]

1. 项目开发前

1.1 虚拟环境virtualenv

如果在一台电脑上, 想开发多个不同的项目, 需要用到同一个包的不同版本, 如果使用上面的命令, 在同一个目录下安装或者更新, 新版本会覆盖以前的版本, 其它的项目就无法运行了.而公司里面往往会存在多个项目的情况,所以需要使用虚拟环境,把当前项目所需要用到的模块及其版本进行隔离包装到一个虚拟环境中使用。

1.1.1 安装

pip install virtualenv             
pip install virtualenv-clone       
pip install virtualenvwrapper      
pip install virtualenvwrapper-win

# 注意以上命令适用于window系统

Linux和Mac下安装配置

技术分享图片
安装虚拟环境的命令 :

sudo pip install virtualenv
sudo pip install virtualenvwrapper


安装完虚拟环境后,如果提示找不到mkvirtualenv命令,须配置环境变量:

# 1、创建目录用来存放虚拟环境
mkdir 
$HOME/.virtualenvs

# 2、打开~/.bashrc文件,并添加如下:
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh

# 3、运行
source ~/.bashrc
View Code

 

1.1.2 常用命令

创建虚拟环境:                mkvirtualenv 虚拟环境名称
创建虚拟环境(指定python版本): mkvirtualenv -p python 虚拟环境名称
查看所有虚拟环境:            workon+2次tab键
使用虚拟环境:               workon 虚拟环境名称
退出虚拟环境:               deactivate
删除虚拟环境(必须先退出虚拟环境内部才能删除当前虚拟环境):
                               rmvirtualenv 虚拟环境名称
    
其他相关命令:
查看虚拟环境中安装的包:              pip freeze  或者 pip list
收集当前环境中安装的包及其版本:       pip freeze > requirements.txt
在部署项目的服务器中安装项目使用的模块: pip install -r requirements.txt

提示:

  • 虚拟环境只会管理环境内部的模块和python解析器,对于源代码是毫无关系

  • 创建虚拟环境需要联网

  • 创建成功后, 会自动工作在这个虚拟环境上

  • 工作在虚拟环境上, 提示符最前面会出现 “(虚拟环境名称)”

1.2 企业项目开发流程

企业的web项目类型:

  1. 商城

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

  3. 社交网络

  4. 资讯论坛

  5. 内部系统

  6. 个人博客

  7. 内容收费站

项目流程:

                                     技术分享图片

1.3需求分析

 

1.4 项目架构

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

  • 前端使用Vue.js vue-cli

  • 后端使用Django REST framework

2. 搭建DRF项目

进入虚拟环境

workon luffy

安装基本类库

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

pip install django

pip install PymySQL

pip install Pillow

pip install djangorestframework

创建django项目

django-admin startproject luffy

提示:

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

虚拟环境中的python。

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

如下图:

技术分享图片

 

3. 项目配置

3.1 项目目录调整

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

3.2 创建数据库

create database luffycity default charset=utf8;

为当前项目创建数据库用户[这个用户只能看到这个数据库]

 

MySQL添加新用户、为用户创建数据库、为新用户分配权限

详细教程请看:https://blog.csdn.net/piaocoder/article/details/53704126

 

3.3 配置数据库连接

打开settings/dev.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()

3.4 日志配置

在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目录必须自己动手创建]
            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,
        },
    }
}
View Code

 

3.5 异常处理

可以再 主文件夹下创建 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

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
View Code

settings.py配置文件中添加

技术分享图片
REST_FRAMEWORK = {
    ...
  
    # 异常处理
    EXCEPTION_HANDLER: luffy.utils.exceptions.custom_exception_handler,
}
View Code

 

Luffy之虚拟环境.项目搭建,目录日志等配置信息

原文:https://www.cnblogs.com/Mixtea/p/10573236.html

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