# Extended in the user table, to add a multi-session field for storing session_key
models.py
class UserInfo(AbstractUser): id = models.AutoField(primary_key=True) department = models.CharField(max_length=10) last_login = models.CharField(max_length=32, null=True) login_ip = models.CharField(max_length=32, null=True) date_joined = models.CharField(max_length=32, null=True) session = models.CharField(max_length=32,null=True)
views.py
the Login DEF (Request): IF request.method == "POST": # receiving POST data UserName = request.POST.get ( "UserName") Password = request.POST.get ( "Password") # for login computer's IP = request.META IP [ 'REMOTE_ADDR'] IF len (userName) == 0 or len (password) == 0: error_login = "username and password can not be null" return the render (Request, "the login.html", about locals ( )) the else: user = auth.authenticate (userName = username, password = password) # user If true, the verification by the IF user: # Get list of user session data, pduser = UserInfo.objects.filter (username = userName ).values()[0]["session"] # If the session is "None" then the have not signed a new user IF pduser == "None": # write session auth.login (Request, the User) # username write session request.session [ "the User"] = UserName makes request.session [ "ID"] = request.user.id makes request.session [ "css_ys"] = request.user.css_ys session_id = request.session.session_key IP request.META = [ 'REMOTE_ADDR'] #### after logging in, session_key generated, writes the session inside session_key user table UserInfo.objects.filter (username = userName) .update ( session = session_id, login_ip = ip) return redirect ( "/ index /" ) # If the field is not the user's session "None", the user session table corresponding to the field delete session table session_key of the else: # ensure that there is only one user session request.session.delete (pduser ) # write the session the auth.login (Request, User) # username write the session makes request.session [ "User"] = userName makes request.session [ "ID"] = request.user.id makes request.session [ "css_ys"] request.user.css_ys = session_id = request.session.session_key UserInfo.objects .filter (username = userName) .Update (= the session session_id) # log acquiring the IP IP request.META = [ 'REMOTE_ADDR'] UserInfo.objects.filter(username=UserName).update(login_ip=ip) time_xxx = time.strftime("%Y-%m-%d %X") Login_log.objects.create(user=UserName, IP=ip, login_time=time_xxx, status="登录成功") return redirect("/index/") else: error_login = "用户名密码错误" request.session["id"] = request.user.id time_xxx = time.strftime("%Y-%m-%d %X") Login_log.objects.create(user=UserName, IP=ip, login_time=time_xxx, status="密码错误") return render(request, "login.html", locals()) else: ip = request.META[‘REMOTE_ADDR‘] return render(request, "login.html", locals())