我想做什么?
我尝试在用户首次设置密码后将新用户重定向到登录对话框。 (我这样做是因为移动用户设置密码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)
检查用户是否使用社交帐户或本地帐户登录。
答案 0 :(得分:1)
您无法使用此信号。 Django对信号的返回值没有任何作用,因此它不会重定向。这根本不是信号的用途。你应该在视图中拥有所有这些逻辑。