Django REST Framework-常用的信号类型(一)

2023-04-26 00:03:42 浏览数 (1)

Django REST Framework提供了许多信号,用于在API的生命周期中执行自定义的代码。

一、request_started信号

request_started信号在Django REST Framework处理API请求时触发。它可以用于记录请求日志、统计API调用次数等。下面是一个request_started信号的示例:

代码语言:javascript复制
from django.dispatch import receiver
from rest_framework import signals

@receiver(signals.request_started)
def log_request(sender, **kwargs):
    request = kwargs['request']
    print(f"Request to {request.path} received")

上面的代码定义了一个名为log_request的函数,并将其注册为request_started信号处理器。当API收到请求时,log_request函数将被调用。在log_request函数中,我们可以记录请求路径、请求方法、请求参数等信息。

二、request_finished信号

request_finished信号在Django REST Framework处理API请求后触发。它可以用于记录请求时间、统计API调用次数等。下面是一个request_finished信号的示例:

代码语言:javascript复制
from django.dispatch import receiver
from rest_framework import signals
import time

@receiver(signals.request_finished)
def log_request(sender, **kwargs):
    request = kwargs['request']
    response = kwargs['response']
    duration = time.time() - request._start_time
    print(f"Request to {request.path} took {duration:.2f} seconds")

上面的代码定义了一个名为log_request的函数,并将其注册为request_finished信号处理器。当API请求处理完成后,log_request函数将被调用。在log_request函数中,我们可以记录请求路径、请求时间等信息。

0 人点赞