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中dictionary items()系列函数的用法实例
Aug 21 Python
跟老齐学Python之大话题小函数(2)
Oct 10 Python
python实现字符串中字符分类及个数统计
Sep 28 Python
python+webdriver自动化环境搭建步骤详解
Jun 03 Python
python3多线程知识点总结
Sep 26 Python
Python定义函数时参数有默认值问题解决
Dec 19 Python
Win10下安装并使用tensorflow-gpu1.8.0+python3.6全过程分析(显卡MX250+CUDA9.0+cudnn)
Feb 17 Python
python解释器pycharm安装及环境变量配置教程图文详解
Feb 26 Python
Python基于yield遍历多个可迭代对象
Mar 12 Python
PyTorch-GPU加速实例
Jun 23 Python
Tensorflow与RNN、双向LSTM等的踩坑记录及解决
May 31 Python
OpenCV-Python实现人脸美白算法的实例
Jun 11 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
重新封装zend_soap实现http连接安全认证的php代码
2011/01/12 PHP
PHP随机数生成代码与使用实例分析
2011/04/08 PHP
通过PHP current函数获取未知字符键名数组第一个元素的值
2013/06/24 PHP
php中jpgraph类库的使用介绍
2013/08/08 PHP
php使用pdo连接sqlite3的配置示例
2016/05/27 PHP
PHP对称加密算法(DES/AES)类的实现代码
2017/11/14 PHP
js iframe跨域访问(同主域/非同主域)分别深入介绍
2013/01/24 Javascript
一个js控制的导航菜单实例代码
2013/12/03 Javascript
jQuery实现控制文字内容溢出用省略号(…)表示的方法
2016/02/26 Javascript
使用JS轻松实现ionic调用键盘搜索功能(超实用)
2016/09/06 Javascript
jQuery实现动态添加节点与遍历节点功能示例
2017/11/09 jQuery
JavaScript设计模式之调停者模式实例详解
2018/02/03 Javascript
js中getter和setter用法实例分析
2018/08/14 Javascript
jQuery设置下拉框显示与隐藏效果的方法分析
2019/09/15 jQuery
在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程
2015/04/25 Python
简单上手Python中装饰器的使用
2015/07/12 Python
Python中字符串的常见操作技巧总结
2016/07/28 Python
python使用正则表达式来获取文件名的前缀方法
2018/10/21 Python
详解Python数据分析--Pandas知识点
2019/03/23 Python
详解numpy.meshgrid()方法使用
2019/08/01 Python
python模拟斗地主发牌
2020/04/22 Python
django model 条件过滤 queryset.filter(**condtions)用法详解
2020/05/20 Python
pandas针对excel处理的实现
2021/01/15 Python
CSS3 实现时间轴动画
2020/11/25 HTML / CSS
浅谈HTML5 FileReader分布读取文件以及其方法简介
2017/11/09 HTML / CSS
美国钻石商店:Zales
2016/11/20 全球购物
香港时尚女装购物网站:ZAFUL
2017/07/19 全球购物
Java程序员综合测试题
2014/04/25 面试题
毕业生的求职信范文分享
2013/12/04 职场文书
《九色鹿》教学反思
2014/02/27 职场文书
毕业生求职自荐书范文
2014/03/27 职场文书
体育口号大全
2014/06/18 职场文书
商品陈列协议书
2014/09/29 职场文书
个人存款证明书
2014/10/18 职场文书
个人学习群众路线心得体会
2014/11/05 职场文书
Python中json.dumps()函数的使用解析
2021/05/17 Python