django前后端分离开发,日志的配置以及使用(目录调整之后使用)

0:前提是进行了目录调整,安装了djangorestframework,

ps:没有调整/安装,文章后面有补充使用的方式

django前后端分离开发,目录调整https://blog.csdn.net/qq_52385631/article/details/122724061?spm=1001.2014.3001.5501

一:日志的配置及使用(固定用法)

第一步:CV到settings(dev)配置里面

# 日志配置
LOGGING = {
    'version': 1,  # 版本号 默认 1
    'disable_existing_loggers': False,  # 是否关掉第三方模块的日志功能,默认都是False的
    'formatters': {  # 日志记录的格式,这里写了两种(名字自定义) verbose simple
        'verbose': {  # levelname等级,asctime记录时间,module表示日志发生的文件名称,lineno行号,message错误信息
            'format': '%(levelname)s %(asctime)s %(module)s %(lineno)d %(message)s'
        },
        'simple': {
            'format': '%(levelname)s %(module)s %(lineno)d %(message)s'
        },
    },
    'filters': {  # 过滤器:哪些信息可以被输出 debug_true/debug_false 的都可以被输出
        'require_debug_true': {  # 在debug=True下产生的一些日志信息,要不要记录日志,需要的话就在handlers中加上这个过滤器,不需要就不加
            '()': 'django.utils.log.RequireDebugTrue',
        },
        'require_debug_false': {  # 和上面相反
            '()': 'django.utils.log.RequireDebugFalse',
        },
    },
    'handlers': {  # 日志处往哪里输出 往控制台还是文件上 输出
        'console': {  # 在控制台输出时的实例
            'level': 'DEBUG',  # 日志等级;debug是最低等级,那么只要比它高等级的信息都会被记录
            'filters': ['require_debug_true'],  # 在debug=True下才会打印在控制台
            'class': 'logging.StreamHandler',  # 使用的python的logging模块中的StreamHandler来进行输出(StreamHandler)
            'formatter': 'simple'  # 指定输出的格式
        },
        # 往文件上进行输出
        'file': {
            'level': 'INFO',
            'class': 'logging.handlers.RotatingFileHandler',  # (RotatingFileHandler 文件输出的核心模块)
            # 日志位置,日志文件名,日志保存目录必须手动创建  日志输出到文件的路径,一定要写对,不然会报错
            'filename': os.path.join(os.path.dirname(BASE_DIR), "logs/dream.log"),  # 注意,你的文件应该有读写权限。
            # 日志文件的最大值,这里我们设置300M
            'maxBytes': 300 * 1024 * 1024,
            # 日志文件的数量,设置最大日志数量为10
            'backupCount': 10,
            # 日志格式:详细格式
            'formatter': 'verbose',
            'encoding': 'utf-8',  # 设置默认编码,否则打印出来汉字乱码
        },
    },
    # 日志对象
    'loggers': {
        'django': {  # 和django结合起来使用,将django中之前的日志输出内容的时候,按照我们的日志配置进行输出,
            'handlers': ['console', 'file'],  # 将来项目上线,把console去掉
            'propagate': True,
            # 冒泡:第三方模块报错,django捕捉到了,是否传递给第三方模块,默认都是True
        },
    }
}

第二步:在根目录下面创建一个文件夹,logs

第三步:配合配合自定义异常类使用

# 创建一个 my_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('django')


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

第四步;

运行djano项目,会发现logs文件夹下多了一个dream.log文件,打开就是日志,

控制台上的输出也变了

ps:以下补充适用于这三种情况

一:没有进行目录调整,且没有安装djangorestframework,原生django进行开发

二:没有进行目录调整,但是安装了djangorestframework

三:进行目录调整,但是没有安装djangorestframework

配置修改:配置只需要改动一个地方,就是日志输出到文件上的路径。

logs文件夹,依旧创建到原来的位置

# 日志位置,日志文件名,日志保存目录必须手动创建  日志输出到文件的路径,一定要写对,不然会报错
            'filename': os.path.join(os.path.dirname(BASE_DIR), "logs/dream.log"),  

修改成你自己logs文件夹的路径即可,

# 日志位置,日志文件名,日志保存目录必须手动创建  日志输出到文件的路径,一定要写对,不然会报错
            'filename': os.path.join("自己的logs文件路径"),  

修改示例,这里以第一种情况为例,

# 日志位置,日志文件名,日志保存目录必须手动创建  日志输出到文件的路径,一定要写对,不然会报错
            'filename': os.path.join(BASE_DIR, "logs/dream.log"), 

 错误异常捕捉使用(如果不需要捕捉,那不用加入下面的代码,直接运行,发送一个请求,就能看到效果):

import logging

logger = logging.getLogger('django')

logger.error("放到你想要放到的地方")

# 第一种情况,不捕捉异常,运行案例 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要将上述的问答系统使用Django实现前后端分离,可以采用Django REST framework来实现API接口,前端可以使用Vue.js等前端框架来调用API接口。 以下是一个简单的示例代码,使用Django REST framework实现上述问答系统: 1. 安装DjangoDjango REST framework ```bash pip install django pip install djangorestframework ``` 2. 创建Django项目和应用 ```bash django-admin startproject qa_system cd qa_system python manage.py startapp api ``` 3. 修改`qa_system/settings.py`文件,添加`rest_framework`和`api`应用 ```python INSTALLED_APPS = [ # ... 'rest_framework', 'api', ] # ... REST_FRAMEWORK = { 'DEFAULT_RENDERER_CLASSES': [ 'rest_framework.renderers.JSONRenderer', ] } ``` 4. 在`api/models.py`文件中定义数据模型 ```python from django.db import models class Question(models.Model): question_text = models.CharField(max_length=200) answer_text = models.CharField(max_length=200) def __str__(self): return self.question_text ``` 5. 在`api/serializers.py`文件中定义序列化器 ```python from rest_framework import serializers from .models import Question class QuestionSerializer(serializers.ModelSerializer): class Meta: model = Question fields = ['question_text', 'answer_text'] ``` 6. 在`api/views.py`文件中定义视图 ```python from rest_framework import generics from .models import Question from .serializers import QuestionSerializer class QAView(generics.RetrieveAPIView): queryset = Question.objects.all() serializer_class = QuestionSerializer lookup_field = 'question_text' ``` 7. 在`qa_system/urls.py`文件中添加路由 ```python from django.urls import path, include from api.views import QAView urlpatterns = [ path('api/qa/<str:question_text>/', QAView.as_view(), name='qa'), ] ``` 8. 运行Django服务器 ```bash python manage.py runserver ``` 现在你可以在浏览器中访问`http://localhost:8000/api/qa/<question_text>/`来获取问答系统的答案,其中`<question_text>`为问题文本。你也可以在前端使用Vue.js等前端框架来调用该API接口,获取问答系统的答案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

骑猪去兜风z1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值