简体   繁体   English

Django基于类的视图-如果用户已登录,则重定向

[英]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.

相关问题 Django:通过基于类的视图重定向已经登录的用户 - Django: Redirect already logged user by class based view 如果用户登录,Django 基于类的视图 TemplateView 执行重定向 - Django Class Based Views TemplateView perform redirect if user is logged in 更新后在Django中基于类的视图中重定向用户 - redirect user after update in class based view in django 在 Django 中重定向登录用户 - Redirect logged in user in Django 在基于类的视图中访问当前登录的用户 - Acessing currently logged in user in class based view Django基于类的视图配置文件视图,无法区分登录用户和模板中正在修改的用户 - Django Class Based Views Profile view, can't distinguish between user logged in and user being modified in a template Django:如何在基于 class 的视图中获取登录用户的用户名? - Django: How do I get the username of the logged-in user in my class based view? 如何在基于django框架类的视图中过滤以仅显示属于已登录用户的交易的销售额 - How can to filter to display only sales for transactions that belong to logged in user in django framework class based view 基于类的视图:如果登录则重定向,否则呈现模板 - Class based View: redirect if logged in, else render template 基于 Django 类的通用视图重定向 - Django class based generic view redirect
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM