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结合selenium获取XX省交通违章数据的实现思路及代码
Jun 26 Python
详解python的数字类型变量与其方法
Nov 20 Python
Window10+Python3.5安装opencv的教程推荐
Apr 02 Python
pip命令无法使用的解决方法
Jun 12 Python
python3使用SMTP发送简单文本邮件
Jun 19 Python
Django分页查询并返回jsons数据(中文乱码解决方法)
Aug 02 Python
Python获取时间范围内日期列表和周列表的函数
Aug 05 Python
django框架中ajax的使用及避开CSRF 验证的方式详解
Dec 11 Python
Python 解决OPEN读文件报错 ,路径以及r的问题
Dec 19 Python
基于Python执行dos命令并获取输出的结果
Dec 30 Python
Python如何通过百度翻译API实现翻译功能
Apr 02 Python
Django2.1.7 查询数据返回json格式的实现
Dec 29 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下使用curl模拟用户登陆的代码
2010/09/10 PHP
PHP number_format() 函数定义和用法
2012/06/01 PHP
php中3des加密代码(完全与.net中的兼容)
2012/08/02 PHP
php日历制作代码分享
2014/01/20 PHP
PHP实现根据数组的值进行分组的方法
2017/04/20 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
一个JS翻页效果
2007/07/23 Javascript
Discuz! 6.1_jQuery兼容问题
2008/09/23 Javascript
JS 自定义带默认值的函数
2011/07/21 Javascript
js 调用本地exe的例子(支持IE内核的浏览器)
2012/12/26 Javascript
js中 关于undefined和null的区别介绍
2013/04/16 Javascript
利用js读取动态网站从服务器端返回的数据
2014/02/10 Javascript
jQuery控制TR显示隐藏的三种常用方法
2014/08/21 Javascript
AngularJs concepts详解及示例代码
2016/09/01 Javascript
js实现的光标位置工具函数示例
2016/10/03 Javascript
jquery移除了live()、die(),新版事件绑定on()、off()的方法
2016/10/26 Javascript
用jQuery的AJax实现异步访问、异步加载
2016/11/02 Javascript
JavaScript实现格式化字符串函数String.format
2016/12/16 Javascript
Angular的$http的ajax的请求操作(推荐)
2017/01/10 Javascript
基于Datatables跳转到指定页的简单实例
2017/11/09 Javascript
详解Node.js 中使用 ECDSA 签名遇到的坑
2018/11/26 Javascript
原生js实现公告滚动效果
2021/01/10 Javascript
微信小程序基于Taro的分享图片功能实践详解
2019/07/12 Javascript
Python实现抓取百度搜索结果页的网站标题信息
2015/01/22 Python
使用Python脚本实现批量网站存活检测遇到问题及解决方法
2016/10/11 Python
Python快速从注释生成文档的方法
2016/12/26 Python
Python通过Django实现用户注册和邮箱验证功能代码
2017/12/11 Python
python实现ftp文件传输系统(案例分析)
2020/03/20 Python
如何在windows下安装Pycham2020软件(方法步骤详解)
2020/05/03 Python
python RSA加密的示例
2020/12/09 Python
社团活动总结
2014/04/28 职场文书
食品安全承诺书范文
2014/08/29 职场文书
运动会加油稿30字
2015/07/21 职场文书
golang 如何用反射reflect操作结构体
2021/04/28 Golang
使用Redis实现秒杀功能的简单方法
2021/05/08 Redis
springboot为异步任务规划自定义线程池的实现
2022/06/14 Java/Android