`

Django admin 日志管理

 
阅读更多

   django拥有自己的admin页面,同时它有自己的一套日志管理结构。正常的日志存放在django_admin_log表中,查看日志可以直接在django的管理页面查看。然而,它的日志记录比较简单,且存放在数据库中。如何扩展他呢?

 

   由于django的管理model,均采用类似方法:

 

 

class ApplicationAdmin(admin.ModelAdmin):
    list_display = ('id','key','name', 'description', 'type','apphandler','argument','create','modified')
    search_fields = ('key','name','description')
admin.site.register(Application,ApplicationAdmin)
 

 

  实际的日志记录逻辑均在父类ModelAdmin中实现,具体在django.conrtrib.admin.options中。

 

 

    def log_addition(self, request, object):
        """
        Log that an object has been successfully added.

        The default implementation creates an admin LogEntry object.
        """
        from django.contrib.admin.models import LogEntry, ADDITION
        LogEntry.objects.log_action(
            user_id         = request.user.pk,
            content_type_id = ContentType.objects.get_for_model(object).pk,
            object_id       = object.pk,
            object_repr     = force_unicode(object),
            action_flag     = ADDITION
        )

    def log_change(self, request, object, message):
        """
        Log that an object has been successfully changed.

        The default implementation creates an admin LogEntry object.
        """
        from django.contrib.admin.models import LogEntry, CHANGE
        LogEntry.objects.log_action(
            user_id         = request.user.pk,
            content_type_id = ContentType.objects.get_for_model(object).pk,
            object_id       = object.pk,
            object_repr     = force_unicode(object),
            action_flag     = CHANGE,
            change_message  = message
        )

    def log_deletion(self, request, object, object_repr):
        """
        Log that an object will be deleted. Note that this method is called
        before the deletion.

        The default implementation creates an admin LogEntry object.
        """
        from django.contrib.admin.models import LogEntry, DELETION
        LogEntry.objects.log_action(
            user_id         = request.user.id,
            content_type_id = ContentType.objects.get_for_model(self.model).pk,
            object_id       = object.pk,
            object_repr     = object_repr,
            action_flag     = DELETION
        )
 

 

    大家一看就明白,下一步做什么了,直接覆写,或是拦截一下,修改一下message信息:

class DemoAdmin(admin.ModelAdmin):
    list_display = ('id', 'name', 'description', 'create','modified')
    search_fields = ('name', 'description',)
    def log_change(self, request, object, message):
        newmessage= "xxxx"    //将消息改写为xxx
        super(SpaceAdmin, self).log_change(request, object, newmessage)
    class Meta:
        pass
    class Admin:
 

   这样就可以完成日志改写了,或者直接叫个log也没啥问题。

 

 

 

 

推荐阅读:https://docs.djangoproject.com/en/dev/ref/contrib/admin/#ref-contrib-admin

               http://www.ibm.com/developerworks/cn/opensource/os-django-admin/

分享到:
评论

相关推荐

    python的基于django的记录日志系统

    总结起来,这个基于Django的记录日志系统项目是一个很好的学习资源,涵盖了Web开发的基础知识,如用户认证、数据库操作、URL路由、模板系统和日志管理。通过实践这个项目,开发者可以加深对Django框架的理解,为构建...

    Django-Admin_后台管理系统_django_

    7. `DjangoAdmin_logs`:可能是一个专门用于记录后台操作日志的模块或应用,帮助跟踪和分析用户行为。 8. `.settings`:这可能是Django项目的配置文件,其中包含了项目特定的设置,如数据库配置、中间件、应用列表...

    基于Django-Vue-Admin毕业设计-企业级后端管理系统

    内置功能 菜单管理:配置系统菜单,操作权限,按钮权限标识、后端接口权限等。 部门管理:配置系统组织机构(公司、部门、角色)。 角色管理:角色菜单权限...插件市场 :基于Django-Vue-Admin框架开发的应用和插件。

    django-vue-admin发布教程.docx

    ### Django-Vue-Admin 发布教程详解 #### 一、概览 本教程旨在帮助开发者了解如何将基于 Django 和 Vue.js 的项目部署到生产环境中。本文档基于文档“django-vue-admin发布教程.docx”,主要介绍了如何在 Linux ...

    django admin添加数据自动记录user到表中的实现方法

    在Django框架中,Django Admin是一个强大的管理界面,它允许开发者轻松地创建、编辑和删除数据库中的模型对象。在一些应用场景中,我们可能需要在通过Django Admin接口添加或修改数据时,自动记录操作用户的用户名...

    Python库 | django-admin-sso-0.1.1.tar.gz

    本文将深入探讨一个与Django相关的Python库——`django-admin-sso-0.1.1`,它为Django的管理界面提供单点登录(Single Sign-On, SSO)功能。 `django-admin-sso-0.1.1.tar.gz`是一个压缩包文件,包含了`django-...

    django-vue-admin-pro-master.zip

    《Django-Vue-Admin-Pro:构建高效后台管理系统》 Django-Vue-Admin-Pro是一个基于Django框架和Vue.js前端库的高级管理界面模板,旨在帮助开发者快速构建功能完善的后台管理系统。它集成了现代Web开发的最佳实践,...

    PyPI 官网下载 | django-admin-logs-1.0.0.tar.gz

    "django-admin-logs-1.0.0.tar.gz"是一个针对Django框架的Python库,用于在Django管理后台集成日志记录和管理功能。通过安装和配置,开发者可以更好地监控应用的运行状态,提高问题排查和性能优化的能力。在Python和...

    基于 django 编写的图书管理系统源码.zip

    7. **Admin Interface**:Django的管理界面可以帮助开发者快速创建和管理数据库对象,可能这个系统也有自定义的admin界面供管理员使用。 8. **Forms and Validation**:Django的表单(Form)系统用于处理用户输入的...

    Django2-xadmin

    1. **Django Admin**: Django自带的管理界面是一个强大的工具,允许开发者快速创建和管理应用的数据模型。然而,它的默认样式和功能可能无法满足所有需求。Django2-xadmin则在Django admin的基础上进行了扩展,提供...

    Python库 | django_admin_rangefilter-0.5.2-py2.py3-none-any.whl

    `django_admin_rangefilter` 是一个针对Python的Django框架开发的后台管理工具库,主要用于增强Django内置的admin界面,提供了日期、数字等范围筛选功能,帮助开发者更方便地进行数据查询和分析。这个库的版本是...

    毕业设计,基于python+django+vue开发的学生信息管理系统,项目前后端分离,内含Python完整源代码,课程设计

    功能包括:学生管理、班级管理、用户管理、日志管理、系统信息模块。 演示帐号: 用户名:admin123 密码:admin123 代码结构 server目录是后端代码 web目录是前端代码 部署运行 后端运行步骤 (1) 安装python 3.8 ...

    django-admin-lightweight-date-hierarchy:带有零查询的Django admin date_hierarchy

    【django-admin-lightweight-date-hierarchy】是一个针对Django管理后台(django-admin)的优化扩展,主要目的是提升日期层次结构(date_hierarchy)功能的性能。在默认情况下,Django的date_hierarchy功能在处理...

    django 自定义管理系统

    通过深入研究`admin_demo`项目,开发者不仅可以学习到Django的基本用法,还能了解到如何利用Django的admin应用快速构建后台管理系统,从而提高开发效率。同时,这也为后续的扩展和定制提供了基础。

    PyPI 官网下载 | django-admin-interface-0.17.1.tar.gz

    `django-admin-interface`可能是对Django内置的管理界面的一个增强或替代,提供更友好的用户体验和定制功能。 在`django-admin-interface-0.17.1`这个压缩包中,我们可能会找到以下内容: 1. `setup.py`:这是...

    django celery celery beat项目

    **描述详解:** 描述中提到“django使用自带的admin后台界面”,这意味着项目利用了Django内置的管理界面(Django Admin),让管理员可以方便地管理和操作数据库中的对象。在这个特定的项目中,这个功能被扩展来动态...

    Python库 | django-admin-wizard-0.1.1.tar.gz

    `django-admin`是Django自带的一个功能,它是一个自动化的后台管理系统,用于快速创建和管理数据模型的CRUD(创建、读取、更新、删除)操作。 `django-admin-wizard`扩展了这个功能,引入了向导式界面,使得数据...

    django开发公司Bug管理系统

    Django的admin接口可以方便地管理数据库中的对象。在`bug_management/admin.py`中注册模型,然后在后台界面中可以轻松地添加、编辑和删除Bug。 11. **测试**: Django提供了测试框架,鼓励开发者编写测试用例确保...

    django-admin-rangefilter:django-admin-rangefilter应用程序,通过管理界面上的自定义日期范围添加过滤器

    在实际开发中,`django-admin-rangefilter` 可以广泛应用于日志分析、销售报告、用户活动跟踪等各种场景,帮助开发者快速定位和分析特定时间范围内的数据。对于那些需要频繁查看和分析时间序列数据的项目来说,这是...

    django笔记 django笔记

    设置项目时,使用`django-admin startproject project_name`创建新项目,然后通过`python manage.py startapp app_name`创建应用。 3. **模型(Models)**: 模型是Django中数据的抽象,定义了数据库表的结构。在...

Global site tag (gtag.js) - Google Analytics