django 信号处理
backend下目录结构
tree backend
backend
├── __init__.py
├── admin.py
├── apps.py
├── models.py
├── signals.py
├── urls.py
└── views.py
__init__.py
default_app_config = 'backend.apps.BackendConfig'
apps.py
from django.apps import AppConfig
class BackendConfig(AppConfig):
default_auto_field = "django.db.models.BigAutoField"
name = "backend"
def ready(self):
import backend.signals
signals.py
import os
from django.db.models.signals import pre_save, post_save
from backend.models import *
from django.core.cache import cache
@receiver(pre_save, sender=Article)
def article_pre_save(sender, instance, **kwargs):
if instance.pk:
cache.delete(f'article_{instance.id}')