我使用Django-allauth作为我的登录/注册相关的东西,所以当用户注册(第一次)进入我的网站时,我/thanks/通过在settings.py文件中定义下面的设置将他重定向到页面
LOGIN_REDIRECT_URL ='/ thanks /'
但是当用户下次尝试登录时(如果已经注册),我应该将他重定向到'/dashboard/'URL
所以试着改变它,Django-allauth signals如下所示,根本不起作用
@receiver(allauth.account.signals.user_logged_in)
def registered_user_login(sender, **kwargs):
instance = User.objects.get_by_natural_key(kwargs['user'])
print instance.last_login==instance.date_joined,"??????????????????????????????"
if not instance.last_login==instance.date_joined:
return HttpResponseRedirect(reverse('dashboard'))
Run Code Online (Sandbox Code Playgroud)
所以任何人都可以让我知道如何重定向用户/dashboard/进行正常登录,我在上面的信号代码中做错了什么?
编辑
根据以下答案进行一些修改后pennersr,我的AccountAdapter课程如下所示
from allauth.account.adapter import DefaultAccountAdapter
# from django.contrib.auth.models import User
class AccountAdapter(DefaultAccountAdapter):
def get_login_redirect_url(self, request):
if request.user.last_login == request.user.date_joined:
return '/registration/success/'
else:
return '/dashboard/'
Run Code Online (Sandbox Code Playgroud)
但是,它仍在重定向用户/dashboard/,我的逻辑在确定用户第一次出错时?
我正在尝试将用户重定向到包含其用户名的网址(例如http:// domain/username /),并试图弄清楚如何执行此操作.我正在使用django.contrib.auth进行用户管理,所以我尝试在设置中使用LOGIN_REDIRECT_URL:
LOGIN_REDIRECT_URL = '/%s/' % request.user.username # <--- fail..
Run Code Online (Sandbox Code Playgroud)
但它似乎只接受固定的字符串,而不是在用户登录后确定的东西.我怎么能完成这个?