2010-12-10 100 views
6

如何設置django註冊帳戶需要由管理員手動激活?如何設置django註冊帳戶需要手動激活?

在帳戶持有人點擊電子郵件中的鏈接後,我希望電子郵件發送給管理員,他還需要點擊一個鏈接,然後才能激活該帳戶。

是否有可能與Django的註冊,或者我需要使用別的東西,以及使用什麼?

回答

5

django-registration允許您編寫custom backend來處理自定義激活需求。

所以你要做的是創建自己的後端,自己實現registeractivate

這裏是你如何能實現register函數的一個例子:

def register(self, request, **kwargs): 
    username, email, password = kwargs['username'], kwargs['email'], kwargs['password1'] 
    if Site._meta.installed: 
     site = Site.objects.get_current() 
    else: 
     site = RequestSite(request) 
    new_user = RegistrationProfile.objects.create_inactive_user(username, email, 
                   password, site, 
                   send_email=False) 
    # send an email to the admins with user information 
    send_new_user_notification(new_user) # you would write this function 
    signals.user_registered.send(sender=self.__class__, 
           user=new_user, 
           request=request) 
    return new_user 

關鍵的一點是要確保send_email設置爲false;這將阻止用戶獲得激活鏈接。然後,您可以決定發送給管理員的電子郵件是否具有激活鏈接,或者您是否滿意他們將轉到管理員並僅檢查「活動」框。

如果使用從django.contrib.authAuthenticationForm然後它會自動拒絕其用戶是is_active假的,但如果你不使用,那麼要確保運行下面的檢查對於需要一個活躍的用戶的任何請求:

def restricted_view(request): 
    if request.user and request.user.is_active: 
     #continue with the code 

您也可以編寫自己的裝飾器(請參閱@login_required指針)。請注意,@login_required確實不是檢查is_active