2010-12-10 9 views
6

管理者が手動でアカウントを起動する必要があるようなdjango-registrationの設定方法を教えてください。アカウントを手動で起動する必要があるようなdjango-registrationの設定方法は?

電子メールのリンクをクリックすると、管理者に電子メールが送信され、リンクをクリックするだけでアカウントが有効になります。

ジャンゴ登録で可能か、それとも何か他のものを使う必要がありますか?

答えて

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.authからAuthenticationFormを使用する場合、それはis_active Falseのですが、その後、アクティブなユーザーが必要とするすべての要求のために、以下のチェックを実行することを確認してくださいことを使用していない場合は、ユーザーに自動的に拒否します:

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

独自のデコレータを書くこともできます(ポインタについては@login_requiredをご覧ください)。 @login_requiredではなく、であることを確認してください。is_activeを確認してください。

関連する問題