使用post_save信号或在视图中执行逻辑有什么区别

时间:2015-11-12 12:28:39

标签: python django django-views signals

所以我有以下代码:

from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver

from myapp.models import UserProfile

@receiver(post_save, sender=User)
def auto_create_profile(sender, **kwargs):
    instance = kwargs['instance']
    created = kwargs['created']
    if created:
        profile = UserProfile(foo=foo)
        profile.user = instance
        profile.save()

以前的代码与在寄存器视图上创建配置文件有什么区别?

def some_view(request):
    #save the user and then
    profile = UserProfile(foo=foo, user=user)
    profile.save()

1 个答案:

答案 0 :(得分:2)

使用post_save时,还会在以其他方式创建用户帐户时创建用户个人资料,例如:

  • 使用manage.py shell控制台
  • 使用django admin
  • 使用其他视图
  • 使用第三方软件包,例如python-social-auth