如何在LoginView内置Django上设置会话

时间:2019-01-09 07:45:09

标签: django django-models django-forms django-templates django-views

我要在用户登录后在django中设置会话,并在注销时销毁会话。我正在使用内置的Auth LoginView进行登录

path('login/', auth_views.LoginView.as_view(template_name='users/login.html'), name='login'),
path('logout/', auth_views.LogoutView.as_view(template_name='users/login.html'), name='logout'),

2 个答案:

答案 0 :(得分:1)

默认情况下,django在注销时自动销毁会话。基本上,它在注销时使用flush。现在,如果要在登录期间放入一些数据,则需要覆盖LoginView。您可以尝试这样:

from django.contrib.auth import login


class CustomLogin(auth_views.LoginView):
    def form_valid(self, form):
         login(self.request, form.get_user())
         self.request.session['some_data'] = "your data"
         return HttpResponseRedirect(self.get_success_url())

并在您的网址中使用它:

path('login/', CustomLogin.as_view(template_name='users/login.html'), name='login'),

答案 1 :(得分:0)

在您的auth_views中添加此

from django.contrib.auth import logout
class LogoutView(View):

    def get(self, request, *args, **kwargs):
        logout(request)
        return HttpResponseRedirect('/accounts/login/')

在网址中

path('logout/', LogoutView.as_view(), name='logout'),