Django 是一个高级 Python Web 框架,它鼓励快速开发和干净、实用的设计。Django 的 admin 界面是一个强大的工具,用于管理 Django 应用程序中的数据模型。通过 admin 界面,管理员可以轻松地添加、编辑和删除数据记录。
Django 的 admin 界面主要分为以下几类:
admin.ModelAdmin
类来自定义 admin 界面的行为和外观。Django 的 admin 界面适用于以下场景:
在 Django 的 admin 界面上记录活动,通常是指记录用户在 admin 界面上的操作日志。这可以通过 Django 的信号(signals)机制来实现。
from django.db import models
from django.contrib.auth.models import User
class AdminActivityLog(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
action = models.CharField(max_length=255)
timestamp = models.DateTimeField(auto_now_add=True)
details = models.TextField(blank=True, null=True)
def __str__(self):
return f"{self.user} - {self.action} - {self.timestamp}"
admin.py
文件中使用 Django 的信号机制来记录用户的操作。from django.contrib import admin
from django.contrib.admin.signals import pre_save, post_save, pre_delete
from django.dispatch import receiver
from .models import YourModel, AdminActivityLog
@receiver(pre_save, sender=YourModel)
def log_pre_save(sender, instance, **kwargs):
log = AdminActivityLog(
user=admin.site.user,
action=f"Pre-save {instance}",
details=str(instance.__dict__)
)
log.save()
@receiver(post_save, sender=YourModel)
def log_post_save(sender, instance, created, **kwargs):
action = "Created" if created else "Updated"
log = AdminActivityLog(
user=admin.site.user,
action=f"{action} {instance}",
details=str(instance.__dict__)
)
log.save()
@receiver(pre_delete, sender=YourModel)
def log_pre_delete(sender, instance, **kwargs):
log = AdminActivityLog(
user=admin.site.user,
action=f"Pre-delete {instance}",
details=str(instance.__dict__)
)
log.save()
通过上述步骤,你可以在 Django 的 admin 界面上记录用户的操作日志。这样可以方便地追踪和审计管理员的操作。
领取专属 10元无门槛券
手把手带您无忧上云