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
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
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
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