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设置检查点简单实现代码
Jul 01 Python
利用Python绘制MySQL数据图实现数据可视化
Mar 30 Python
Python使用cookielib模块操作cookie的实例教程
Jul 12 Python
Python GUI Tkinter简单实现个性签名设计
Jun 19 Python
Python 支付整合开发包的实现
Jan 23 Python
Python合并2个字典成1个新字典的方法(9种)
Dec 19 Python
Python使用uuid库生成唯一标识ID
Feb 12 Python
python:HDF和CSV存储优劣对比分析
Jun 08 Python
Python异常处理机制结构实例解析
Jul 23 Python
Django怎么在admin后台注册数据库表
Nov 14 Python
Python lxml库的简单介绍及基本使用讲解
Dec 22 Python
python 如何在list中找Topk的数值和索引
May 20 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实现utf-8和GB2312编码相互转换函数代码
2013/02/07 PHP
PHP封装的Twitter访问类实例
2015/07/18 PHP
JavaScript中的null和undefined解析
2012/04/14 Javascript
基于KMP算法JavaScript的实现方法分析
2013/05/03 Javascript
js自动查找select下拉的菜单并选择(示例代码)
2014/02/26 Javascript
jQuery对JSON数据进行排序输出的方法
2015/06/24 Javascript
javascript实现网页屏蔽Backspace事件,输入框不屏蔽
2015/07/21 Javascript
javascript将中国数字格式转换成欧式数字格式的简单实例
2016/08/02 Javascript
AngularJS中directive指令使用之事件绑定与指令交互用法示例
2016/11/22 Javascript
怎样判断jQuery当前元素是隐藏还是显示
2016/11/23 Javascript
NodeJS创建最简单的HTTP服务器
2017/05/15 NodeJs
基于vue-ssr服务端渲染入门详解
2018/01/08 Javascript
打通前后端构建一个Vue+Express的开发环境
2018/07/17 Javascript
JS+HTML5 Canvas实现简单的写字板功能示例
2018/08/30 Javascript
es6数值的扩展方法
2019/03/11 Javascript
vue移动端实现手机左右滑动入场动画
2020/06/17 Javascript
vue 开发之路由配置方法详解
2019/12/02 Javascript
JavaScript 自定义html元素鼠标右键菜单功能
2019/12/02 Javascript
JS原形与原型链深入详解
2020/05/09 Javascript
vue-i18n实现中英文切换的方法
2020/07/06 Javascript
基于python的汉字转GBK码实现代码
2012/02/19 Python
在pandas多重索引multiIndex中选定指定索引的行方法
2018/11/16 Python
对python3 sort sorted 函数的应用详解
2019/06/27 Python
python2和python3应该学哪个(python3.6与python3.7的选择)
2019/10/01 Python
纯CSS3实现自定义Tooltip边框涂鸦风格的教程
2014/11/05 HTML / CSS
h5网页水印SDK的实现代码示例
2019/02/19 HTML / CSS
美国性感女装网站:bebe
2017/03/04 全球购物
Linux内核的同步机制是什么?主要有哪几种内核锁
2016/07/11 面试题
寒假实习自荐信
2014/01/26 职场文书
社区学雷锋活动策划方案
2014/01/30 职场文书
工地安全质量标语
2014/06/07 职场文书
高一军训决心书
2015/02/05 职场文书
故意伤害罪辩护词
2015/05/21 职场文书
老舍《猫》教学反思
2016/02/17 职场文书
女人创业励志语录,句句蕴含能量,激发你的潜能
2019/08/20 职场文书
PostgreSQL解析URL的方法
2021/08/02 PostgreSQL