django的内置信号
Posted yunxintryyoubest
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django的内置信号相关的知识,希望对你有一定的参考价值。
pre_init 在model执行构造方法之前自动触发
post_init django的model在执行构造方法之后,自动触发
pre_save django的对象保存之前,自动触发
post_save django的对象保存之后,自动触发
pre_delete 这个是django的对象删除之前,自动触发
post_delete django的的对象删除之后,自动触发
m2m_changed 使用m2m的第三张表(add,remove,clear)前后,自动触发
class_prepared 程序启动时,对已经注册的app的表,对于每一个类,自动触发
Management signals
pre_migrate 执行migrate命令之前,自动触发
post_migrate 执行migrate命令之后,自动触发
Request/Response signals
request_started 请求到来之前,自动触发
request_finished 请求结束后,自动触发
Test signals
settings_chnaged 使用test测试配置文件时,自动触发
settings_rendered 使用test测试渲染模板是,自动触发
Databse signals
connections_created 这个是创建数据库的时候,自动触发
对于django的内置的信号,只需要注册相对应的信号(在project下的__init__里面注册),当程序执行的时候,就会自动触发
project_singal 下面的__init__里面:
############################在这里面可以添加这个信号量
from django.db.models import signals
###############################导入这个信号量的模块
print(‘执行这个singal的信号量的操作‘)
############这个是一开始就会执行的操作
def before_save(*args,**kwargs):
print(‘打印出来‘,args,kwargs)
signals.pre_save.connect(before_save)
####################################################################################
执行的结果:
‘‘‘
() {‘signal‘: <django.db.models.signals.ModelSignal object at 0x0000022947A93080>, ‘sender‘: <class ‘app01.models.Booke‘>, ‘instance‘: <Booke: Booke object (None)>, ‘raw‘: False, ‘using‘: ‘default‘, ‘update_fields‘: None}
‘‘‘
# //这个会答应这个日志出出来
views:
from app01.models import *
from django.shortcuts import HttpResponse
def action(requets):
print(‘开始执行这个fun3的函数了‘)
models.User.objects.filter(id=1).update(user_name=‘yun‘)##这个是可以更新这个数据进去
models.Book.objects.create(book_name=‘简爱‘)###############这个是创建这个数据进去
print(‘创建成功‘)
return HttpResponse(‘fun3‘)
models:
class Book(models.Model):
book_name=models.CharField(max_length=32,verbose_name=‘书籍名字‘)
class User(models.Model):
user_name=models.Username(max_length=32)
以上是关于django的内置信号的主要内容,如果未能解决你的问题,请参考以下文章