通过以上多篇文章的讲解,对该项目的功能已经实现了很多,本文将对该项目的用户注册,登录,修改用户信息,以及退出等功能的实现。
点击head.html头部页面的注册按钮,触发超链接跳转至user_register.html页面,其页面代码如下

在urls.py文件中定义该请求地址
path('register/',views.register), 在views.py文件中创建处理该请求的函数
# 跳转至注册页面 def register(request): return render(request,"user_register.html",{"typeList": types}) 其注册页面代码如下
用户注册 {% load static %} {% include "header.html" with flag=10 typeList=typeList %} {% if msg %} {{ msg }} {% endif %} {% include "footer.html" %} 
用户填写注册信息后,点击提交按钮,将信息发送给后台服务器,在urls.py文件中定义请求地址
path('user_rigister/',views.user_rigister), 在views.py文件中创建处理该函数
# 处理注册请求 def user_rigister(request): # 用户名 username=request.POST["username"] # 邮箱 email=request.POST["email"] # 密码 password=request.POST["password"] # 收货人 name=request.POST["name"] # 收货电话 phone=request.POST["phone"] # 收货地址 address=request.POST["address"] # 判断用户名是否存在 users=User.objects.filter(username=username) # 判断邮箱是否存在 emails=User.objects.filter(email=email) if users or emails: msg="用户名或邮箱重复,请重新填写!" path="user_register.html" else: User.objects.create(username=username,email=email,password=password,name=name,phone=phone,address=address,isadmin=False,isvalidate=False) msg = "注册成功,请登录!" path = "user_login.html" return render(request,path,{"msg":msg,"typeList": types}) 当注册成功,跳转至登录页面,页面代码如下,如果注册失败,则会重新刷新注册页面
用户登录 {% load static %} {% include "header.html" with flag=9 typeList=typeList %} {% if msg %} {{ msg }} {% endif %} {% if failMsg %} {{ failMsg }} {% endif %} {% include "footer.html" %} 
当注册成功后,进入登录页面,界面如上图所示,也可以点击登录选项进入登录页面
![]()
在urls.py文件中定义该请求地址
path('login/',views.login), 在views文件中创建该函数
# 处理跳转登录页面的请求 def login(request): return render(request, "user_login.html", {"typeList": types}) 
当用户输入用户名和密码后,点击提交,将用户登录信息发送给后台服务器
在urls文件中定义请求地址
path('user_login/',views.user_login), 在setting.py文件中,添加以下代码,使session在固定时间内失效
# 设置session过期时间为1小时(3600秒) SESSION_COOKIE_AGE = 60 在views文件中创建函数处理该请求
# 处理登录的请求 def user_login(request): # 用户名/邮箱 ue=request.POST["ue"] # 密码 password=request.POST["password"] # 使用用户名和密码查询该用户信息 users=User.objects.filter(username=ue,password=password) if not users: users=User.objects.filter(email=ue,password=password) # global user if users: request.session["isLogin"]=True u=users.values()[0] print(u) request.session["user"]=u failMsg = "" path="user_center.html" else: user=None request.session["user"] = user failMsg="用户名、邮箱或者密码错误,请重新登录!" path="user_login.html" print(users.values_list()) return render(request,path,{"typeList": types,"failMsg":failMsg}) 当登录成功后,跳转至个人中心页面,页面代码如下
个人中心 {% load static %} {% include "header.html" with flag=4 typeList=typeList user=user %} {% if not user %} {% endif %} {% if msg %} {{ msg }} {% endif %} {% if failMsg %} {{ failMsg }} {% endif %} 个人中心
{% include "footer.html" %} 
在header.html头部页面中,添加以下超链接
![]()
在urls.py文件中定义接收该请求的地址
path('user_center/',views.user_center), 在views.py文件中定义该函数处理请求
# 个人中心页面 def user_center(request): return render(request,"user_center.html",{"typeList": types}) 该页面中,有两个表单,第一个表单用于修改用户个人信息,第二个表单用于修改密码。

在urls文件中添加接收请求地址
path('user_changeaddress/',views.user_changeaddress), 在views文件中定义函数处理该请求
# 修改个人收件信息 def user_changeaddress(request): name=request.POST["name"] phone=request.POST["phone"] address=request.POST["address"] user=request.session.get("user") print(user) u=User.objects.filter(id=user["id"]) u.update(name=name,phone=phone,address=address) u = User.objects.filter(id=user["id"]).values() # 将更新后的数据同步session中 request.session["user"]=u[0] msg="收件信息更新成功!" return render(request,"user_center.html",{"typeList": types,"msg":msg}) 
在urls文件中定义接收修改密码的请求
path('user_changepwd/',views.user_changepwd), 在views文件中创建函数处理修改密码请求
# 修改密码 def user_changepwd(request): psd=request.POST["password"] newPsd=request.POST["newPassword"] user = request.session.get("user") print(user) key="" if psd == user["password"]: u = User.objects.filter(id=user["id"]) u.update(password=newPsd) key="msg" msg="修改成功!" u = User.objects.filter(id=user["id"]).values() # 将更新后的数据同步session中 request.session["user"] = u[0] else: key="failMsg" msg="修改失败,原密码不正确,你再想想!" return render(request, "user_center.html", {"typeList": types, key: msg}) 在header.html头部页面中,添加以下超链接

在urls.py文件中定义接收该请求的地址
path('user_logout/',views.user_logout), 在views.py文件中定义该函数处理请求
#退出登录 def user_logout(request): try: del request.session["isLogin"] del request.session["user"] except: print("在线时间超时,请重新登录") return redirect(index)