Beispiel #1
0
    def form_valid(self, form):
        user = authenticate(username=form.cleaned_data.get('username'),
                            password=form.cleaned_data.get('password'))
        if user is not None:
            if user.is_active:
                #  用户登陆
                auth_login(self.request, user)
                #  重定向
                return super().form_valid(form)
        else:
            #  用户验证不成功
            form.add_error(None, '用户名或密码不正确')
            context = {}

            response = TemplateResponse(self.request, self.template_name,
                                        context)

            # print(response.context_data)
            #  如果勾选了记住用户名,则保存到Cookies中, key=mark_name, 如果未勾选,设置mark_name 为空
            username = self.request.POST.get('username')
            if self.request.POST.get('mark_name') == '1':
                response.set_signed_cookie('mark_name', username)
            else:
                response.delete_cookie('mark_name')
                username = ''

            context = {'form': form, 'mark_name': username}
            response.context_data = context
            return response
Beispiel #2
0
    def form_invalid(self, form):
        context = {}
        response = TemplateResponse(self.request, self.template_name, context)
        #  如果勾选了记住用户名,则保存到Cookies中, key=mark_name
        username = self.request.POST.get('username')
        if self.request.POST.get('mark_name') == '1':
            response.set_signed_cookie('mark_name', username)
        else:
            response.delete_cookie('mark_name')
            username = ''

        context = {'form': form, 'mark_name': username}
        response.context_data = context
        return response
Beispiel #3
0
def login(request):
    template_name = 'user/login.html'
    success_url = reverse_lazy('user:user_center_info')  # 跳转到用户中心
    if request.method == 'GET':
        return render(
            request, template_name,
            {'mark_name': request.get_signed_cookie('mark_name', '')})

    else:
        username = request.POST.get('username')
        form = UserLoginForm(request.POST)
        if form.is_valid():
            user = authenticate(username=form.cleaned_data['username'],
                                password=form.cleaned_data['password'])
            if user is not None:
                if user.is_active:
                    #  登陆
                    auth_login(request, user)
                    #  重定向, 获取装饰器login_required 的next参数,实现跳转到登陆之前的路径
                    success_url = request.GET.get('next', success_url)
                    response = redirect(success_url)
                    #  记住用户名功能
                    if request.POST.get('mark_name') == '1':
                        response.set_signed_cookie('mark_name', username)
                    else:
                        response.delete_cookie('mark_name')
                    return response
            else:
                form.add_error(None, '用户名或密码不正确')
        # 页面记住用户名功能,把用户名存在cookie里
        response = TemplateResponse(request, template_name, {})

        if request.POST.get('mark_name') == '1':
            response.set_signed_cookie('mark_name', username)
        else:
            response.delete_cookie('mark_name')
            username = ''
        response.context_data = {'form': form, 'mark_name': username}
        return response
Beispiel #4
0
 def get_default_template_response(self, request, *args):
     response = TemplateResponse(request, template=self.template_name)
     response.context_data = self.get_context_data(request, *args)
     return response