Django在Model保存前记录日志实例


Posted in Python onMay 14, 2020

Django中如何在Model保存前做一定的固定操作,比如写一句日志?

关键词: 信号

利用Django的Model的Signal Dispatcher, 通过django.db.models.signals.pre_save() 方法,在事件发生前,

发射

触发信号,这一切都被调度中的receiver方法深藏功与名的保存了。

信号的处理一般都写在Model中,举个例子:

import logging
from django.db import models
from django.db.models.signals import pre_save
from django.dispatch import receiver
 
class Order(models.Model):
  # ...
 
logger = logging.getLogger(__name__)
 
@receiver(pre_save, sender=Order)
def pre_save_handler(sender, **kwargs):
  
  # 我们可以在Order这个Model保存之前尽情调戏了:)
  logger.debug("{}".format(sender, **kwargs))
  print 'fuck universe'

这样应该就实现了题中的要求,类似的方法还有比如 pre_init 是在Model实例之前会触发, post_init 在实例之后触发,同理就是 pre_save 和 post_save 了。

补充知识:Django models.save()的问题

Django views.py 引用models.py进行modles.objects.create()然后进行.save的问题。

我们是不能直接进行保存的,提交到数据库里面的。

EX:

我们这里通过post获取到信息后。

views.py

def post(self, request, ab=None, all_seat=None):

    # 获取用户信息
    date = request.POST.get('date')
    time = request.POST.get('time')

然后

views.py

seatform = SeatForm(request.POST)
          # 提交给数据库
          #这里的is_valid()是Django默认的,检查是否正确
        if seatform.is_valid():
          # 这里向数据库新增一条信息,然后保存
          getSeat = Seat.objects.create(dateTime=date, classtime=time, status='0', user=name, number=label)
          getSeat.save()

上面的SeatForm()是我们在与views.py同级目录下创建的forms.py

forms.py

class SeatForm(forms.Form):
#注意这里的date和time需要与前端的命名要一直
  date = forms.CharField()
  time = forms.CharField()

通过这样的方法,我们就可以保存到数据库了。

以上这篇Django在Model保存前记录日志实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python批量修改文件后缀示例代码分享
Dec 24 Python
深入解析Python中函数的参数与作用域
Mar 20 Python
关于Django显示时间你应该知道的一些问题
Dec 25 Python
Python后台开发Django会话控制的实现
Apr 15 Python
Python&&GDAL实现NDVI的计算方式
Jan 09 Python
pytorch 利用lstm做mnist手写数字识别分类的实例
Jan 10 Python
解决pyCharm中 module 调用失败的问题
Feb 12 Python
Python logging模块写入中文出现乱码
May 21 Python
Python-opencv实现红绿两色识别操作
Jun 04 Python
Python读取yaml文件的详细教程
Jul 21 Python
Python爬虫与反爬虫大战
Jul 30 Python
Python Pytorch查询图像的特征从集合或数据库中查找图像
Apr 09 Python
django 连接数据库出现1045错误的解决方式
May 14 #Python
Django ORM filter() 的运用详解
May 14 #Python
Django设置Postgresql的操作
May 14 #Python
numpy矩阵数值太多不能全部显示的解决
May 14 #Python
使用python采集Excel表中某一格数据
May 14 #Python
django 模版关闭转义方式
May 14 #Python
Django表单提交后实现获取相同name的不同value值
May 14 #Python
You might like
用PHP获取Google AJAX Search API 数据的代码
2010/03/12 PHP
PHP 函数执行效率的小比较
2010/10/17 PHP
PHP CURL获取返回值的方法
2014/05/04 PHP
win7计划任务定时执行PHP脚本设置图解
2014/05/09 PHP
PHP文件上传、客户端和服务器端加限制、抓取错误信息、完整步骤解析
2017/01/12 PHP
JavaScript原型继承之基础机制分析
2011/08/26 Javascript
EasyUI 中 MenuButton 的使用方法
2012/07/14 Javascript
不用构造函数(Constructor)new关键字也能实现JavaScript的面向对象
2013/01/11 Javascript
跟我学Nodejs(一)--- Node.js简介及安装开发环境
2014/05/20 NodeJs
整理Javascript基础入门学习笔记
2015/11/29 Javascript
jQuery 生成svg矢量二维码
2016/08/09 Javascript
搭建Bootstrap离线文档的方法
2016/12/02 Javascript
javascript闭包功能与用法实例分析
2017/04/06 Javascript
javascript 中事件冒泡和事件捕获机制的详解
2017/09/01 Javascript
Vue实现动态创建和删除数据的方法
2018/03/17 Javascript
jQuery zTree插件使用简单教程
2019/08/16 jQuery
Vue在chrome44偶现点击子元素事件无法冒泡的解决方法
2019/12/15 Javascript
python3爬取各类天气信息
2018/02/24 Python
python用pandas数据加载、存储与文件格式的实例
2018/12/07 Python
详解django2中关于时间处理策略
2019/03/06 Python
python程序快速缩进多行代码方法总结
2019/06/23 Python
tensorflow mnist 数据加载实现并画图效果
2020/02/05 Python
Python 多线程共享变量的实现示例
2020/04/17 Python
Python如何根据时间序列数据作图
2020/05/12 Python
python利用paramiko实现交换机巡检的示例
2020/09/22 Python
SHEIN台湾:购买最新流行女装服饰
2019/05/18 全球购物
医疗纠纷协议书
2014/04/16 职场文书
优秀应届生求职信
2014/06/16 职场文书
订货会邀请函
2015/01/31 职场文书
清明节网上祭英烈寄语2015
2015/03/04 职场文书
党员志愿者服务倡议书
2015/04/29 职场文书
css背景和边框标签实例详解
2021/05/21 HTML / CSS
Python实战之实现简易的学生选课系统
2021/05/25 Python
使用Navicat Premium工具将oracle数据库迁移到MySQL
2021/05/27 Oracle
基于Python实现一个春节倒计时脚本
2022/01/22 Python
MySQL去除密码登录告警的方法
2022/04/20 MySQL