2010-08-09 94 views
3

我即將創建一個已經監視註冊的站點,只允許某些人註冊。毫無疑問,儘管我在註冊表格上面寫了任何文字,但仍會註冊一些不合適的內容,所以我們要適度地進行。在Django admin中激活用戶時發送電子郵件

當註冊時django.contrib.authUser和配置文件將被創建,並將發送一封電子郵件給管理員。主持人將登錄到Django管理網站,檢查他們是誰被允許註冊並標記他們的帳戶活躍。如果他們有些不當行爲,那麼賬戶將被刪除。

我將使用recaptcha嘗試停止自動嘗試。

我想在帳戶被激活或刪除時發送一封電子郵件,讓帳戶持有人知道他們的帳戶發生了什麼,並且他們可以登錄,或讓他們知道我們知道他們在忙什麼他們應該停止愚蠢。

我懷疑這與信號有關,但坦率地說,如果我使用的是從django.contrib.auth提供的預製模型,那麼它實際上並不適用。

任何提示,線索或代碼都是優雅地接受。

回答

1
from django.db.models.signals import post_save 
from django.contrib.auth.models import User 

def send_user_email(sender, instance=None, **kwargs): 
    if kwargs['created']: 
     #your code here 
post_save.connect(send_user_email, sender=User) 

像這樣的東西應該工作。 Here是文檔。

+3

post_save無法正常工作,因爲他無法知道用戶是否處於活動狀態。他想知道用戶何時被激活,而不是創建。 – 2010-08-09 16:39:54

1

你想看看Signals

  • 當賬戶被激活時,您應該使用pre_save。您可以將當前用戶與數據庫上的現有實例進行比較:檢查實例是否存在,檢查前一個是否爲active = False,檢查新的實例是否活動= True,然後send an email
  • 當賬戶被刪除時,使用pre_delete。如果您使用post_delete,您將無法訪問電子郵件。
+0

謝謝,但是你能分享一下代碼嗎? – 2015-07-16 11:24:07

+0

文檔中的代碼不夠清楚嗎? – 2015-07-16 13:57:09

相關問題