luffy项目之基础设置
2022/2/17 23:14:41
本文主要是介绍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) }) }
这篇关于luffy项目之基础设置的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-04敏捷管理与看板工具:提升研发、设计、电商团队工作效率的利器
- 2025-01-04智慧养老管理工具如何重塑养老生态?
- 2025-01-04如何打造高绩效销售团队:工具与管理方法的结合
- 2025-01-04解决电商团队协作难题,在线文档工具助力高效沟通
- 2025-01-04春节超市管理工具:解锁高效运营与顾客满意度的双重密码
- 2025-01-046种主流销售预测模型:如何根据场景选用最佳方案
- 2025-01-04外贸服务透明化:增强客户信任与合作的最佳实践
- 2025-01-04重新定义电商团队协作:在线文档工具的战略作用
- 2025-01-04Easysearch Java SDK 2.0.x 使用指南(三)
- 2025-01-04百万架构师第八课:设计模式:设计模式容易混淆的几个对比|JavaGuide