2011-01-31 103 views
2

我使用the tutorial at this link做懒惰注册,我试图将它与django-registration相结合。后整合懒惰注册与Django注册的方法

在慵懒的注册链接本教程只需要调用一个命令重新父保存的事件:

def on_registration_complete(self, request): 
    Wishlist.reparent_all_my_session_objects(request.session, request.user) 
    return HttpResponseRedirect('/') 

def on_login_complete(self, request, user, openid=None): 
    Wishlist.reparent_all_my_session_objects(request.session, request.user) 
    return HttpResponseRedirect('/') 

我怎么做一个后钩Django的登记之后调用reparent_all_my_session_objects()命令用户登录或注册?我是否需要通过复制django.contrib.auth创建自己的验证码

回答

0

需要在注册和登录时创建您自己的信号接收器。

# Handle the signal sent by user_login 
from registration.signals import user_login, user_registered 
from events.models import Event 
from django.contrib.auth import authenticate, login 

# Use the signal sent after the login wrapper 
def user_login_handler(sender, **kwargs): 
    """signal intercept for user_login""" 
    request = kwargs['request'] 
    Event.reparent_all_my_session_objects(request.session, request.user) 

def user_registered_handler(sender, **kwargs): 
    """signal intercept for user_registered""" 
    request = kwargs['request'] 
    # Authenticate user, so that a User model (instead of AnonymousUser) is assigned to Event 
    # Registration form validates password1==password2 
    new_user = authenticate(username=request.POST['username'], password=request.POST['password1']) 
    login(request, new_user) 
    Event.reparent_all_my_session_objects(request.session, new_user) 

user_login.connect(user_login_handler) 
user_registered.connect(user_registered_handler)