我有自定义信号功能:
def notify_after_registration(sender, **kwargs):
email_subject = 'Account confirmation'
email_body = "Hey {}, thanks for signing up. To activate your account, click this link within \
48hours http://127.0.0.1:8000/accounts/register_confirm/{}".format(username, activation_key)
send_mail(email_subject, email_body, settings.EMAIL_HOST_USER,
[email], fail_silently=False)
post_save.connect(notify_after_registration(sender), sender=User)
这里我从我的视图生成激活密钥并将其保存在不同的模型中。
现在如何在此处传递此激活密钥和用户名。
谢谢
答案 0 :(得分:0)
您可以将参数作为关键字参数(kwargs
)传递为activation_key=...
,username=...
等等。接收者将他们带入kwargs
:kwargs['activation_key']
,kwargs['username']
。
编辑:您没有明确调用该函数。只要有必要且有意义(毕竟它是自定义信号),您就会使用关键字触发信号,并且框架会调用适当的接收器正确传递参数。
答案 1 :(得分:0)
这一行错了:
post_save.connect(notify_after_registration(sender), sender=User)
连接时不应在此处调用接收器功能
你应该这样做:
post_save.connect(notify_after_registration, sender=User)
post_save
是一个内置的Django信号,因此会自动使用sender
arg发送。
一切都在文档中:
https://docs.djangoproject.com/en/1.8/topics/signals/#receiver-functions