def login(request): if request.method == 'GET': return render(request, 'login/login.html') if request.method == 'POST': username = request.POST.get('username') password = request.POST.get('password') code = request.POST.get('captcha') if not username or not password or not code: return res_josn_data.fail_api(msg="用户名或密码没有输入") s_code = request.session.get("code", None) print('验证码:', code, s_code) user_ip = request.META.get('REMOTE_ADDR') print(user_ip) request.session["code"] = None if not all([code, s_code]): # login_log(request, uid=username, is_access=False, desc='验证码错误,请刷新验证码') return res_josn_data.fail_api(msg="验证码错误,请刷新验证码!") if code != s_code: login_log(request, uid=username, is_access=False, desc='验证码错误') return res_josn_data.fail_api(msg="验证码错误") user = User.objects.filter(id_number=username).first() if user is None: login_log(request, uid=username, is_access=False, desc='用户不存在') return res_josn_data.fail_api(msg="用户不存在!") if user.user_status == 0: login_log(request, uid=user.id_number, is_access=False, desc='用户被禁用') return res_josn_data.fail_api(msg="用户被禁用!")
时间: 2023-12-01 19:03:11 浏览: 84
后端开发项目:入门级实践.pdf
这段代码是一个登录接口的视图函数,处理用户登录时提交的表单数据。如果是 GET 请求,返回登录页面;如果是 POST 请求,则从请求中获取用户名、密码和验证码等数据,进行校验并进行相应的处理。
首先判断用户输入的用户名、密码和验证码是否为空,如果有任何一个为空,则返回错误信息。然后从 session 中获取之前存储的验证码,如果验证码为空,则返回错误信息;如果验证码不为空,则比较用户输入的验证码和 session 中的验证码是否一致,如果不一致,则返回错误信息。
接着根据用户输入的用户名查询数据库,如果用户不存在,则返回错误信息;如果用户存在但是被禁用了,则返回错误信息。最后,如果用户名和密码都正确,且用户状态正常,则表示登录成功,返回成功信息。
阅读全文