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实现包含min函数的栈
Apr 29 Python
python的变量与赋值详细分析
Nov 08 Python
Python验证文件是否可读写代码分享
Dec 11 Python
python监控文件并且发送告警邮件
Jun 21 Python
pandas分别写入excel的不同sheet方法
Dec 11 Python
Python实现的简单线性回归算法实例分析
Dec 26 Python
Python爬取爱奇艺电影信息代码实例
Nov 26 Python
Python注释、分支结构、循环结构、伪“选择结构”用法实例分析
Jan 09 Python
python用pip install时安装失败的一系列问题及解决方法
Feb 24 Python
Pycharm中import torch报错的快速解决方法
Mar 05 Python
TensorFlow的reshape操作 tf.reshape的实现
Apr 19 Python
关于python中remove的一些坑小结
Jan 04 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文件上传实例详解!!!
2007/01/02 PHP
java EJB 加密与解密原理的一个例子
2008/01/11 PHP
php利用cookie实现访问次数统计代码
2011/05/19 PHP
第五章 php数组操作
2011/12/30 PHP
php实现数组纵向转横向并过滤重复值的方法分析
2017/05/29 PHP
PHP实现非阻塞模式的方法分析
2018/07/26 PHP
PHP读取目录树的实现方法分析
2019/03/22 PHP
某人初学javascript的时候写的学习笔记
2010/12/30 Javascript
Javascript 颜色渐变效果的实现代码
2013/10/01 Javascript
当达到输入长度时表单自动切换焦点
2014/04/06 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/06/05 Javascript
js图片实时加载提供网页打开速度
2014/09/11 Javascript
JQuery控制radio选中和不选中方法总结
2015/04/15 Javascript
用JS动态设置CSS样式常见方法小结(推荐)
2016/11/10 Javascript
React Native之ListView实现九宫格效果的示例
2017/08/02 Javascript
JS原型继承四步曲及原型继承图一览
2017/11/28 Javascript
vscode 开发Vue项目的方法步骤
2018/11/25 Javascript
Web安全之XSS攻击与防御小结
2018/12/13 Javascript
浅谈python中set使用
2016/06/30 Python
关于pip的安装,更新,卸载模块以及使用方法(详解)
2017/05/19 Python
实例讲解Python脚本成为Windows中运行的exe文件
2019/01/24 Python
Python shelve模块实现解析
2019/08/28 Python
HTML5 语音搜索(淘宝店语音搜素)
2013/01/03 HTML / CSS
Canvas中设置width与height的问题浅析
2018/11/01 HTML / CSS
国际知名设计师时装商店:Coggles
2016/09/05 全球购物
潘多拉珠宝俄罗斯官方网上商店:PANDORA俄罗斯
2020/09/22 全球购物
后勤人员岗位职责
2013/12/17 职场文书
旅游管理毕业生自荐信范文
2014/03/19 职场文书
机电专业毕业生求职信
2014/07/01 职场文书
酒店管理专业毕业生自我鉴定
2014/09/29 职场文书
归元寺导游词
2015/02/06 职场文书
自主招生自荐信范文
2015/03/04 职场文书
2016年寒假社会实践活动总结
2015/10/10 职场文书
「月刊Comic Alive」2022年5月号封面公开
2022/03/21 日漫
MySQL视图概念以及相关应用
2022/04/19 MySQL
Golang解析JSON对象
2022/04/30 Golang