【发布时间】:2018-06-26 03:55:30
【问题描述】:
我想做什么?
在用户第一次设置密码后,我试图将新用户重定向到登录对话框。 (我这样做是因为移动用户设置了密码 Django 隐式注销用户)
有什么问题?
由于某种原因,password_set 信号似乎不起作用。即发送函数loginAfterPassChange 没有被执行。
我的代码:
如何设置密码
views.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)
urls.py:
from django.conf.urls import url
from .import views
urlpatterns = [
url(r'^updatePro', views.setPassword, name='updatePro')
]
models.py:
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)
if user.profile.provider != '' 检查用户是使用社交帐户还是本地帐户登录。
【问题讨论】:
标签: django django-allauth