Django在Model保存前記錄日志實(shí)例
Django中如何在Model保存前做一定的固定操作,比如寫一句日志?
關(guān)鍵詞: 信號
利用Django的Model的Signal Dispatcher, 通過django.db.models.signals.pre_save() 方法,在事件發(fā)生前,
發(fā)射
觸發(fā)信號,這一切都被調(diào)度中的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保存之前盡情調(diào)戲了:)
logger.debug("{}".format(sender, **kwargs))
print 'fuck universe'
這樣應(yīng)該就實(shí)現(xiàn)了題中的要求,類似的方法還有比如 pre_init 是在Model實(shí)例之前會觸發(fā), post_init 在實(shí)例之后觸發(fā),同理就是 pre_save 和 post_save 了。
補(bǔ)充知識:Django models.save()的問題
Django views.py 引用models.py進(jìn)行modles.objects.create()然后進(jìn)行.save的問題。
我們是不能直接進(jìn)行保存的,提交到數(shù)據(jù)庫里面的。
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)
# 提交給數(shù)據(jù)庫
#這里的is_valid()是Django默認(rèn)的,檢查是否正確
if seatform.is_valid():
# 這里向數(shù)據(jù)庫新增一條信息,然后保存
getSeat = Seat.objects.create(dateTime=date, classtime=time, status='0', user=name, number=label)
getSeat.save()
上面的SeatForm()是我們在與views.py同級目錄下創(chuàng)建的forms.py
forms.py
class SeatForm(forms.Form): #注意這里的date和time需要與前端的命名要一直 date = forms.CharField() time = forms.CharField()
通過這樣的方法,我們就可以保存到數(shù)據(jù)庫了。
以上這篇Django在Model保存前記錄日志實(shí)例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- Python Django框架實(shí)現(xiàn)應(yīng)用添加logging日志操作示例
- Django 使用logging打印日志的實(shí)例
- Django日志模塊logging的配置詳解
- Django日志及中間件模塊應(yīng)用案例
- django實(shí)現(xiàn)日志按日期分割
- django日志默認(rèn)打印request請求信息的方法示例
- 如何在django中添加日志功能
- 基于Django實(shí)現(xiàn)日志記錄報錯信息
- Django多進(jìn)程滾動日志問題解決方案
- Django使用uwsgi部署時的配置以及django日志文件的處理方法
- Django項目如何正確配置日志(logging)
相關(guān)文章
python實(shí)現(xiàn)掃描日志關(guān)鍵字的示例
下面小編就為大家分享一篇python實(shí)現(xiàn)掃描日志關(guān)鍵字的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04
Python實(shí)現(xiàn)全自動輸入文本的示例詳解
這篇文章主要和大家分享一個Python全自動輸入文本的腳本,可以實(shí)現(xiàn)自動用Notepad++打開文本文件,然后自動輸入文本,最后保存并關(guān)閉文件,從而實(shí)現(xiàn)全面自動化處理文本,希望對大家有所幫助2022-11-11
使用Python中的Playwright制作測試視頻的實(shí)現(xiàn)步驟
Playwright 是一種流行的用于測試 Web 應(yīng)用程序的自動化工具,它提供了多種功能來使測試更加高效和可靠,這些功能之一是能夠捕獲測試運(yùn)行的視頻,在此博客中,田辛老師將探索如何使用 Python 中的 Playwright 制作測試視頻,感興趣的同學(xué)可以參考本文自己動手嘗試2023-10-10
Python?Flask實(shí)現(xiàn)后臺任務(wù)輕松構(gòu)建高效API應(yīng)用
本文介紹如何使用Python?Flask框架實(shí)現(xiàn)后臺任務(wù),以快速構(gòu)建高效的API應(yīng)用。通過實(shí)例演示,讀者將學(xué)會如何利用Flask框架搭建后臺任務(wù),實(shí)現(xiàn)異步處理和多線程操作等高級功能,提升應(yīng)用性能和用戶體驗(yàn)2023-04-04
Python基于內(nèi)置庫pytesseract實(shí)現(xiàn)圖片驗(yàn)證碼識別功能
這篇文章主要介紹了Python基于內(nèi)置庫pytesseract實(shí)現(xiàn)圖片驗(yàn)證碼識別功能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-02-02
Python中應(yīng)該使用%還是format來格式化字符串
這篇文章主要介紹了Python中應(yīng)該使用%還是format來格式化字符串的相關(guān)知識,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-09-09
Python保留數(shù)據(jù)并刪除Excel單元格的函數(shù)和公式
在分析處理Excel表格時,我們可能需要使用各種公式或函數(shù)對表格數(shù)據(jù)進(jìn)行計算,從而分析出更多的信息,但在展示、分享或再利用分析結(jié)果時,我們可能需要將含有公式的單元格轉(zhuǎn)換為靜態(tài)數(shù)值,本文將介紹如何使用Python代碼批量移除Excel單元格中的公式并保留數(shù)值2024-10-10

