Django在Model保存前记录日志实例
作者:喝完这杯还有一箱 发布时间:2023-10-05 03:01:29
标签:Django,Model,日志
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()
通过这样的方法,我们就可以保存到数据库了。
来源:https://blog.csdn.net/qq_37049050/article/details/81746046
0
投稿
猜你喜欢
- 阅读之前:在看文章具体内容之前,希望你可以 先打开IE8,打开http://www.taobao.com,然后在地址栏里输入:javascr
- 本文实例讲述了Python实现的简单hangman游戏。分享给大家供大家参考。具体如下:#!/usr/bin/env pythonimpor
- 本文实例讲述了Python3实现计算两个数组的交集算法。分享给大家供大家参考,具体如下:问题:给定两个数组,写一个方法来计算它们的交集。方案
- 今天需要做一个翻译的工具,找到之前写过的有道翻译,已经不能用了,最后看到百度翻译还不错,不过官方版本是Python2,我需要Python3,
- 今天有一位同学给了我一个excel文件,要求读取某些行,某些列,然后我试着做了一个demo,这里分享出来,希望能帮到大家:首先安装xlrd:
- 本文实例讲述了Go语言实现的web爬虫方法。分享给大家供大家参考。具体分析如下:这里使用 Go 的并发特性来并行执行 web 爬虫。修改 C
- 假设在python中有一字典如下:x={‘a':'1,2,3', ‘b':'2,3,4'}需
- Oracle关系型数据库管理系统是世界上流行的关系数据库,它是一个极其强大、灵活和复杂的系统,据说,在使用oracle时应有这样的思想,那就
- 我就废话不多说了,大家还是直接看代码吧~import tensorflow as tfn1 = tf.constant(2)n2 = tf.
- css的流行导致了标签的流行,很直观,看起来很清爽。流行的一部分,还有很多种功能强大且美观的导航。。。1. Change.org2. N.D
- LOAD DATA INFILE '文件地址' INTO TABLE 表名 FIELDS TERMINATED BY
- 使用Python开发的同学一定听说过Requsts库,它是一个用于发送HTTP请求的测试。如比我们用Python做基于HTTP协议的接口测试
- 本文讲述了LINUX下Oracle数据导入导出的方法。分享给大家供大家参考,具体如下:一. 导出工具 exp1. 它是操作系统下一个可执行的
- API的应用通常会处理json数据,刚好今天看到了json字符串和python字符串的区别,放一段代码,区别一下子就看出来,的确json 库
- 本文为大家分享的Python工程师面试题主要与Python Web相关,供大家参考,具体内容如下1、解释一下 WSGI 和 FastCGI
- 前言本文主要介绍了关于Python中TCP socket的写法,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。一、 服务器
- modf()方法返回两个项的元组x的整数小数部分。这两个元组具有相同x符号。则返回一个浮点数的整数部分。语法以下是modf()方
- 引言在负责咨询工作的过去 6 年中,我曾多次听说关于数据访问和操作方面的问题,它时刻困扰着用户:“如何编写应用程序,以便
- 前言本章介绍pandas中的缺失数据,主要内容有:pandas中对np.nan的操作: 统计 、 删除 、 填充 、 插值 pan
- 程序比较大,运行时间又长的时候,不想等着结果,只要先确保程序功能正确无误,可以把需要的结果print然后保存到TXT文件中,超级方便# 创建