[英]Django Class Based View - redirect if user is logged in
I have a login view which looks like: 我有一个登录视图,看起来像:
class LoginView(TemplateView):
template_name = 'login.html'
def post(self, request):
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user:
login(request, user)
return redirect(reverse('index'))
else:
messages.add_message(request, messages.ERROR, 'Login failed')
return render(request, self.template_name, {'username' : username})
Now, I'd like to modify it so if a user is alredy logged in and visits this url, template isn't rendered and insted he is redirected to the index page (or any other than the login one). 现在,我想对其进行修改,以便如果用户已经登录并访问此url,则不会呈现模板并且不会指示他被重定向到索引页面(或除登录页面之外的任何页面)。 I've tried overriding get method but it didn't work.
我试过重写get方法,但是没有用。 What's the proper solution then?
那什么是正确的解决方案?
def post(self, request):
if request.user.is_authenticated():
return HttpResponseRedirect("/yourIndex/")
else:
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user:
login(request, user)
return redirect(reverse('index'))
else:
messages.add_message(request, messages.ERROR, 'Login failed')
return render(request, self.template_name, {'username' : username})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.