Giter Club home page Giter Club logo

drf-with-history-track's Introduction

[DRF with api history track][docs]

Build Status Coverage Status Maintainability DownloadsDownloadsDownloads PyPI version


修改说明

此包会覆盖drf的rest_frame的包下的内容 drf基础库版本为3.9.2

主要修改为增加了signal.py 和修改了mixin的update方法 和引入了track_action的历史记录model

安装

pip install drf-safe-jack

ADD 增加了通过post方法请求put、patch、delete方法

使用方式:在请求头header加入method 写入对应方法put或者patch等即可用post方法访问put等接口

method=put 

ADD 增加了自动记录api接口请求历史

历史记录基于api设计而非基于model,使用simple-history等包会引入大量的历史记录表,对数据库整体结构不是很友好,

所以自己实现了一个,所有的内容保存到history这个model中,采用多线程不影响正常接口的访问速度

特性:

1.多线程保存

2.单个历史表 ,可根据api对应序列化器serializer内的model名来搜索历史记录

3.中文支持 自动转换none,单选choice,多选为中文名显示

使用方式:

      #  settins.py
     INSTALLED_APPS = [
         ...,
         'track_actions',
     ]

     MIDDLEWARE = [
         ... ,
         'track_actions.requestMiddleware.RequestMiddleware',
     ]
    python manage.py migrate track_actions

    # url.py
     url(u'^api/', include('track_actions.urls')), # 这个路由可自定义

    # 即可在 api/history 目录下获取到所有的历史记录

记录返回内容

   # 字段预览 
            "table_name": "basic_basicrescue",  # 每个 api 里面对应的表名
            "created_at": "2021-06-26T14:29:04.838753", # 操作日期
            "instance_id": "424",   #实例id
            "action": "由未填写更新为是",  # 操作内容
            "field_name": "病人-发病时间",   # 中文的字段名
            "user": 62   # 操作用户id
            "user_obj": {  # 操作用户详情
                "id": 62,
                "username": "test_006",
                "first_name": "王五",  #
                "department": 
             }

查找某个api对应的历史记录方法

/api/history/?table_name=basic_basicrescue&instance_id=412  # tablename 为表名  instance_id为对应表的实例id

drf-with-history-track's People

Contributors

blackjackgg avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.