from django.contrib.auth.signals import user_logged_in
def update_last_login(sender, user, **kwargs):
"""
A signal receiver which updates the last_login date for
the user logging in.
"""
user.last_login = timezone.now()
user.save(update_fields=['last_login'])
user_logged_in.connect(update_last_login)
#signals.py
from django.dispatch import Signal
user_logged_in = Signal(providing_args=['request', 'user'])
也可以
from django.dispatch import receiver
@receiver(user_logged_in)
def update_last_login(sender, user, **kwargs):
pass
可以继续参考网上其他博文1,2, 或者pydispatcher源代码
iOS中有类似的KVO和Notification方法, 我对notification的印象深刻,曾大量运用。我认识这可能是比异步回调更值得大规模推广的编程方法。我会期待着以后的编程语言在多线程,多进程,通知模式,松耦合上做出更多创新。如果我们把一段代码赋予的对象当做一种生命体的话,我们希望这些生命体之间可以对话。
记得几年前在学校做研究时,我当时就想把一个数理模型变成有社会参与者的multi-agent模型,后来未果,导致后来竟然转了行。我们能预见,并且偏好于对话机制。完全可以把虚拟世界中的对象也可以理解为实体,让它们产生对话,从而自动完成一些任务,完成对于未知的发现。
也可以想象,之后的python可能会原生支持内部的观察者模式。
网友评论