密码_set信号在Django allauth中不起作用

时间:2018-01-17 09:57:43

标签: django django-allauth

我想做什么?

我尝试在用户首次设置密码后将新用户重定向到登录对话框。 (我这样做是因为移动用户设置密码Django隐式注销用户)

有什么问题?

出于某种原因,<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" /> <ul> <li> <a class="dropdown-toggle" href="{% url 'Homepage' %}"> <span class="glyphicon glyphicon-home"><i class="fa fa-home" aria-hidden="true"></i></span> <div class="navtab"> Accueil </div> </a> </li> </ul>信号似乎不起作用。即发件人函数password_set没有被执行。

我的代码:

如何设置密码

views.py:

loginAfterPassChange

urls.py:

@receiver(user_logged_in)
def getFirstTimePass(user, request, **kwargs): #this works
    if user.profile.provider != '' and user.profile.firstTimeLogin:
        user.profile.firstTimeLogin = False
        user.profile.save()
        raise ImmediateHttpResponse(render(request, 'index.html', {'type': user.profile.provider, 'email': user.email}))

@receiver(password_set)
def loginAfterPassChange(request, user, **kwargs): #this doesn't work
    data = {'msg': 'Please login with your new password.'}
    return HttpResponse(data)

def setPassword(request): #this works
    data = {'errMsg': 'Something went wrong.'}
    if not request.user.has_usable_password():
            password = request.POST.get('password')         
            request.user.set_password(password)
            request.user.save()
            data['errMsg'] = ''
    return JsonResponse(data)   

models.py:

from django.conf.urls import url
from .import views

urlpatterns = [
url(r'^updatePro', views.setPassword, name='updatePro') 
]

class Profile(models.Model): user = models.OneToOneField(User, related_name='profile', on_delete=models.CASCADE) provider = models.CharField(max_length=256, default='') firstTimeLogin = models.BooleanField(default=True) 检查用户是否使用社交帐户或本地帐户登录。

1 个答案:

答案 0 :(得分:1)

您无法使用此信号。 Django对信号的返回值没有任何作用,因此它不会重定向。这根本不是信号的用途。你应该在视图中拥有所有这些逻辑。