ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

luffy项目之基础设置

2022-02-17 22:33:55  阅读:163  来源: 互联网

标签:axios 项目 py django 虚拟环境 设置 luffy 日志


复习

# 企业项目的类型
# 项目开发流程
	-开发那块:部门---》小组
    	-研讨会---》技术选型---》架构设计---》数据库设计
        -功能分块----》分任务开发
        -项目管理平台(禅道)--->看任务,开发(钉钉交流)
        -把代码提交到git(自测)---》任务点完成---》(代码review或代码评审)
        -发版测试
        -准备上线----》联调(前端)
        -测试
        -上线
        -补充:小型公司没有专门的运维
        
# pip换源
# 虚拟环境
	-系统的解释器(加入环境变量)
    	-创建出虚拟环境1(加入到环境变量)
        -创建出虚拟环境2
    -安装和配置
        pip3 install virtualenv
        pip3 install virtualenvwrapper-win
	   在环境变量例配置 WORKON_HOME: D:\Virtualenvs
            
    -创建,查看,删除虚拟环境
    	-mkvirtualenv -p python3 虚拟环境名称
        -workon  # 查看
        -workon luffy # 使用
        -deactivate  # 退出
        -rmvirtualenv 虚拟环境名称  # 删除

今日内容

1 luffy后台项目创建目录调整

# 创建虚拟环境
	mkvirtualenv -p python3 luffy
# 安装django
	pip install django==2.2.2
# 使用pycharm创建项目(django-admin创建项目)
	-选中刚刚创建的虚拟环境,依赖于这个虚拟环境创建项目
    


# 创建app
python ../../manage.py startapp user

# 开发测试阶段,使用manage.py 启动项目     并发量10左右(很低)
# 项目上线阶段,使用uwsgi部署项目+wsgi.py          应发量100-200左右   qps、



# 项目调整后的结构
luffy   # 项目名字
    -logs    # 日志文件
    -luffy
        -apps   # 项目所有的app 
        -settings  # 项目的配置文件(开发和上线配置) 里面有dev.py(开发) pro.py(上线)
        -libs      # 公共库,第三方库
        -urls.py   # 路由
        -wsgi.py   # 使用uwsgi部署项目时用到
    -manage.py # 测试阶段项目启动入口
    -scripts   # 脚本文件(测试文件...)

# apps 里面的记得注册  想简写直接写app名字 就需要吧路径加入到环境变量(luffy和apps)
    sys.path.append(BASE_DIR)# 小luffy的路径
    apps_path=os.path.join(BASE_DIR,'apps')
    sys.path.append(apps_path) #apps 的路径

# django 默认使用MySQLdb链接mysql数据库,但是现在MySQLdb,只在python2.x上有效,3.x上无效
# 但是3.x 有pymysql,所有django中需要安装pymysql,并且在某个py文件中 配置
# 但是到了django 2.2后,这样做,需要改django源码

###############所以隆重推荐 mysqlclient
# 使用python 3.x上另一个操作数据库的模块mysqlclient,
# 安装:windows看人品,linux有不同的解决方案

# 解决方案一:win的操作系统缺东西(集成库)
	-https://zhuanlan.zhihu.com/p/102535551
        
# 解决方案二:使用whl文件安装
	-https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient
     -下载下来以后
    -pip install 路径+文件

1.1 如果报错

 #目录修改之后还需要 manage,py对应的settings路径 如果启动不了 需要修改运行的那个 先删除 在从新加一个 
# wsgi.py settings路径也需要需要修改为上线的setting配置

1.3 目录如下

2 luffy后台项目配置(日志,全局异常,响应对象)

2.1 日志

# 复制代码到配置文件 
LOGGING = {
    'version': 1,
    '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': {
            # 实际开发建议使用WARNING
            'level': 'DEBUG',
            'filters': ['require_debug_true'],
            'class': 'logging.StreamHandler',
            'formatter': 'simple'
        },
        'file': {
            # 实际开发建议使用ERROR
            'level': 'ERROR',
            'class': 'logging.handlers.RotatingFileHandler',
            # 日志位置,日志文件名,日志保存目录必须手动创建,注:这里的文件路径要注意BASE_DIR代表的是小luffyapi
            'filename': os.path.join(os.path.dirname(BASE_DIR), "logs", "luffy.log"),
            # 日志文件的最大值,这里我们设置300M
            'maxBytes': 300 * 1024 * 1024,
            # 日志文件的数量,设置最大日志数量为10
            'backupCount': 10,
            # 日志格式:详细格式
            'formatter': 'verbose',
            # 文件内容编码
            'encoding': 'utf-8'
        },
    },
    # 日志对象
    'loggers': {
        'django': {
            'handlers': ['console', 'file'],
            'propagate': True, # 是否让日志信息继续冒泡给其他的日志处理系统
        },
    }
}


# 在项目路径下建立utils/logging.py
utils 保存的是一些模块、工具等
import logging
logger = logging.getLogger('django')

#创建一个路由分发include  
	path('home/', include('home.urls')),

# 以后,在py文件中,导入使用即可
from luffy.utils.logging import logger
def Test(request):
    logger.error('有错误')
    return HttpResponse('收到了')
# 路由分发时需要导入如果报错就看下图


###############################导入模块路径最短优先#############################

2.2 全局异常

# 写一个异常函数 utils/exception
from rest_framework.views import exception_handler
from rest_framework.response import Response


def My_exception_handler(exc, context):
    # 出异常才会走到这 记日志

    from utils.logging import logger

    res = exception_handler(exc, context)
    # print(res)
    # print(exc)
    # print(context)
    # 日志记得尽量详细
    # 因为context是一个列表,能取出不少东西
    logger.error('系统错误,请求用户是:%s,请求地址是:%s,请求视图类是:%s,错误原因是:%s'
                 % (context['request'].user, context['request'].get_full_path(), str(context['view']), str(exc)))

    if res:  # res有值,证明走了drf的异常,

        return Response({'code': 888, 'msg': res.data['detail']})
    else:
        return Response({'code': 999, 'msg': '服务器异常,准备跑路'})
    
    
# 配置在配置文件中
REST_FRAMEWORK = {
    'EXCEPTION_HANDLER': 'utils.exception.common_exception_handler',
}

# 以后,只要使用drf出的异常,都会记录日志
# 记得raise一个异常测试
class TestView(APIView):
    def get(self, request):
        raise Exception('错误原因') #999
        # raise APIException('错误原因')  #888
        return Response('我是TestView')

2.3 响应对象

# 在utils/response.py
from rest_framework.response import Response
class APIResponse(Response):

    def __init__(self, code=100, msg='迪迦奥特曼', http_status=None, headers=None, exception=False, **kwargs):
        data = {
            'status': code,
            'msg': msg,
        }
        if kwargs:
            data.update(kwargs)
        super().__init__(data=data, status=http_status, headers=headers, exception=exception)


 # 以后,响应对象,用自己的
class TestView(APIView):
    def get(self, request):
        return APIResponse() #可以传,可以不传

3 luffy数据库配置

#查看用户
 select user,host,password from mysql.user;

# 创建一个用户:zhang,需要对luffy库有所有权限
# 以后程序中,使用的数据库用户,不要使用root
# grant 权限(create, update) on 库.表 to '账号'@'host' identified by '密码'
# 下面这句话翻译就是创建一个用户张,他对路飞库下的所有表都有操作权限,版本问题需要再加一个本地可以登录
grant all privileges on luffy.* to 'zhang'@'%' identified by 'Luffy123?';

#本地可以登录
grant all privileges on luffy.* to 'zhang'@'localhost' identified by 'Luffy123?';

#刷新权限
flush privileges;

# 项目配置文件 密码不能明文 所以可以通过os模块用本机电脑环境变量 
# 如果拿不到用后面那个 正常不应该带
res=os.getenv('DB_PWD','Luffy123?')
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'luffy', # 库名字
        'HOST': '127.0.0.1',
        'USER': 'zhang',
        'PASSWORD': res,  # 明文在这
        'PORT': 3306,
    }
}

4 luffy前台项目创建配置

# 1 创建项目
 vue create luffy_front
    
# 2 使用pycharm打开,配置可以使用点击启动

# 3 删除App.vue中的代码
<template>
  <div id="app">
    <router-view/>
  </div>
</template>

# 4 删除 Helloworld.vue 和About.vue
# 5 修改  router--index.js,删掉 About的路径

# 6 配置全局css--》assets--》css--》global.css
/* 声明全局样式和项目的初始化样式 */
/*
清除掉所有标签的默认样式
 */
body, h1, h2, h3, h4, h5, h6, p, table, tr, td, ul, li, a, form, input, select, option, textarea {
    margin: 0;
    padding: 0;
    font-size: 15px;
}

a {
    text-decoration: none;
    color: #333;
}

ul {
    list-style: none;
}

table {
    border-collapse: collapse; /* 合并边框 */
}

# 7 在main.js中引入
// 引入写的全局css global.css
import './assets/css/global.css'

# 8 安装axios
npm install axios
# 9 在main.js中引入
import axios from "axios";
// 原型,把axios放到Vue的原型中
// 以后在vue对象中直接通过  this.$axios 拿到的就是axios
Vue.prototype.$axios=axios

# 10 编写配置文件    assets---》js---》settings.js
export default {
    base_url:'http://127.0.0.1:8000'  // 后端地址
}

# 11 在main.js中配置
import settings from "./assets/js/settings";
Vue.prototype.$settings=settings


# 12 以后在组件中使用
     created() {
            this.$axios.get(this.$settings.base_url + '/home/test2').then(res => {
                console.log(res.data)
            })
 
        }

标签:axios,项目,py,django,虚拟环境,设置,luffy,日志
来源: https://www.cnblogs.com/zhangshihu/p/15906675.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有