ICode9

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

Luffy项目创建与配置

2022-04-19 02:00:46  阅读:201  来源: 互联网

标签:py 路径 创建 配置 apps luffy 日志 Luffy 环境变量


目录

Luffy项目创建与配置

Luffy项目后台创建

步骤:

第一步:进入luffy虚拟环境安装django2.2版本

注意:千万别开代理,报错报错报错!

第二部:第二步:使用pycharm创建后台luffy项目,选择解释器

image-20220419003210831

image-20220419003327682

image-20220419003553468

第三步就是目录调整

目录调整

第三步,调整目录

配置文件调整

1、新建setting文件夹,把原来的settins.py配置文件改名为dev.py,再copy一份,命名为pro.py

  • dev.py:开发阶段用的配置
  • pro.py:上线阶段用的配置
  • image-20220419004325096

2、在manage.py 中指向的配置文件,改成自己修改后的配置文件路径

    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'luffy_api.setting.dev')

3、设置国际化(可选)

LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = False

4、启动项目

注意如果不能点击启动可以添加一个Django server

image-20220419004851687

app调整

调整app的路径,以后把所有app都放到luffy_api下的apps文件夹下,这样更加整洁

1、创建项目

  • 切换到apps路径下,执行创建app的命令

    python ../../manage.py startapp user
    

    注意:切换路径,不然找不到文件报错

    PS E:\luffy_api\luffy_api\apps> python manage.py startapp user
    D:\Virtualenvs\luffy\Scripts\python.exe: can't open file 'manage.py': [Errno 2] No such file or directory
    
    

image-20220419005415966

2、注册项目

原来在配置文件的INSTALLED_APPS直接注册,现在直接注册找不到user模块(应用),需要配置

方式一:绝对路径注册

INSTALLED_APPS = [
    'luffy_api.apps.user',
]

方式二:apps路径添加到环境变量中(sys.path)

# 原来直接注册为什么不报错?
原来直接写app名字不报错,原因是app就在项目根路径下(模块的查找),由于项目的根路径在环境变量中,app就在根路径下,它能直接找到
# 现在为什么报错?
现在的问题是apps路径不在环境变量中,它就找不到
# 解决
把apps的路径加入到环境变量中,要在项目的启动时加,启动入口是配置文件

apps添加到环境变量

sys.path.append(os.path.join(BASE_DIR,'apps'))

image-20220419010151685

以后再INSTALLED_APPS中只需要写app的名字即可

uwsgi调整

如果是测试阶段不修改也没问题,项目如果上线,使用uwsgi上线,运行wsgi.py需要修改

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'luffy_api.setting.pro')

第三方类库、公共文件、创建日志、测试脚本文件夹

  • 在应用下创建libs文件夹:第三方类库
  • 在应用下创建utils文件夹:公共文件
  • 在根下创建logs文件夹和scripts文件夹:日志和测试脚本

添加环境变量

  • apps添加环境变量

  • 应用(小luffy_api)加入环境变量,导入模块的时候,只要从环境变量的路径开始导就可以了,从luffy_api路径开始导入即可

    image-20220419011749167

'''dev.py'''
# apps添加环境变量
sys.path.append(os.path.join(BASE_DIR,'apps'))
# 小luffy_api添加到环境变量
sys.path.append(BASE_DIR)

注意:如果导入pycharm爆红,但是没有错,点右键,把该路径(在环境变量中的),做成source root即可

image-20220419012139805

注意

### 注意:以后导入包
  -尽量用最短路径导入,如果从长路径导入--》路径经过的py文件都会去执行--》可能会导致循环导入的问题
  -我个人推荐用相对导入
  # from apps.user import models
	from . import models  推荐用这个
  
  -py文件中有相对导入,这个py文件不能作为脚本运行
  -django项目中,由于没有右键运行的脚本,所以都可以用相对导入

项目目录结构

### 项目目录结构
"""
├── luffy_api
	├── logs				      # 项目运行时/开发时日志目录 - 包
  ├── luffy_api/      # 项目主应用,开发时的代码保存 - 包
      ├── apps/      		# 开发者的代码保存目录,以模块[子应用]为目录保存 - 包
      ├── libs/      		# 第三方类库的保存目录[第三方组件、模块] - 包
      ├── setting/  		# 配置目录 - 包
			├── dev.py   	 # 项目开发时的本地配置
			└── prod.py  	 # 项目上线时的运行配置
	  ├── urls.py    		 # 总路由
	  ├── wsgi.py           
	  └── utils/     		 # 多个模块[子应用]的公共函数类库[自己开发的组件]
  ├── manage.py			   # 脚本文件
  ├── templates          # html文件
  └── scripts/       	# 保存项目运营时的脚本文件 - 文件夹
"""
 		

Luffy后台配置

配置日志

在配置文件中加入:

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': 'INFO',
            '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
import logging
# 创造一个logger对象,使用的是配置文件中的django这个
logger = logging.getLogger('django')

## 以后使用,导入直接用,打印到控制台和记录到文件中
from utils.logging import logger
logger.info("我执行了一下")

处理全局异常

utils文件夹下创建excepiton.py

## 全局异常捕获

from rest_framework.views import exception_handler  # 默认没有配置,出了异常会走它
from rest_framework.response import Response
from utils.logging import logger

def common_exception_handler(exc, context):
    res = exception_handler(exc, context)
    if res:
        res = Response(data={'code': 998, 'msg': res.data.get('detail', '服务器异常,请联系系统管理员')})
    else:
        res = Response(data={'code': 999, 'msg': str(exc)})
    request = context.get('request')
    view = context.get('view')
    logger.error('错误原因:%s,错误视图类:%s,请求地址:%s,请求方式:%s' % (str(exc), str(view), request.path, request.method))
    return res

dev.py中

REST_FRAMEWORK = {
    'EXCEPTION_HANDLER': 'utils.exception.common_exception_handler'  # 再出异常,会执行这个函数
}

标签:py,路径,创建,配置,apps,luffy,日志,Luffy,环境变量
来源: https://www.cnblogs.com/48xz/p/16163588.html

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

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

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

ICode9版权所有