av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術文章
文章詳情頁

Django在Model保存前記錄日志實例

瀏覽:147日期:2024-10-06 11:39:44

Django中如何在Model保存前做一定的固定操作,比如寫一句日志?

關鍵詞: 信號

利用Django的Model的Signal Dispatcher, 通過django.db.models.signals.pre_save() 方法,在事件發生前,

發射

觸發信號,這一切都被調度中的receiver方法深藏功與名的保存了。

信號的處理一般都寫在Model中,舉個例子:

import loggingfrom django.db import modelsfrom django.db.models.signals import pre_savefrom 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保存前記錄日志實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Django
相關文章:
主站蜘蛛池模板: 国产日韩欧美 | 亚洲国产成人av好男人在线观看 | 亚洲午夜av久久乱码 | 国产一级一级毛片 | 亚洲精品一区二区在线观看 | 在线午夜电影 | 久久成人免费 | 91精品在线看 | 日本在线看片 | 日本一本视频 | 亚洲最新在线视频 | 免费黄色a级毛片 | 99久久精品免费看国产四区 | 国产精品毛片一区二区在线看 | 国产精品免费在线 | 欧美综合在线视频 | 欧美在线视频免费 | 久久天天综合 | 日韩一区二| 天天艹逼网 | 视频一区在线观看 | 欧美日韩不卡 | 国产一二三区精品视频 | 一级片网站视频 | www.色.com| 红桃视频一区二区三区免费 | 中文字幕一区二区三区不卡 | 日本午夜免费福利视频 | 91国在线高清视频 | 99色综合| 免费观看羞羞视频网站 | jizz亚洲人 | 欧美日韩精品国产 | 午夜看电影在线观看 | 国产一区二区视频在线 | 伊人春色成人 | 天天操一操 | 成人精品久久久 | 午夜性视频 | 国产精品视频在线观看 | 国产一区二区三区在线 |