【Django】网上蛋糕项目商城-注册,登录,修改用户信息,退出功能
创始人
2024-12-26 14:03:50
0

概念

通过以上多篇文章的讲解,对该项目的功能已经实现了很多,本文将对该项目的用户注册,登录,修改用户信息,以及退出等功能的实现。

注册功能实现

点击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 %}
{% csrf_token %}

注册新用户

用户名
邮箱
密码
收货人
收货电话
收货地址
{% 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 %}
{% csrf_token %}

用户登录

用户名/邮箱
密码
{% 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 %}

个人中心

{% csrf_token %}

收货信息

收货人 { request.session.user.name }}" placeholder="请输入收货">
收货电话 { request.session.user.phone }}" placeholder="请输入收货电话">
收货地址 { request.session.user.address }}" placeholder="请输入收货地址">

{% csrf_token %}

安全信息

原密码
新密码
{% 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})

1.修改个人收货地址 

该页面中,有两个表单,第一个表单用于修改用户个人信息,第二个表单用于修改密码。

在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})

2.修改密码 

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

相关内容

热门资讯

一分钟了解!"山西打... 一分钟了解!"山西打锅子技巧"总是是真的有辅助技巧(讲解有挂)-哔哩哔哩1、该软件可以轻松地帮助玩家...
透视指南书!xpoker辅助神... 透视指南书!xpoker辅助神器(透视)开挂透视工具(哔哩哔哩)1、玩家可以在xpoker辅助神器线...
七分钟辅助!小闲川南手游辅助器... 七分钟辅助!小闲川南手游辅助器,大唐开局自动外开挂(都是有挂辅助插件)-哔哩哔哩进入游戏-大厅左侧-...
四分钟策略!fishpoker... 四分钟策略!fishpoker透视底牌(透视)真是是有辅助透视(哔哩哔哩)1、超多福利:超高返利,海...
第3分钟插件!边锋干橙眼ios... 第3分钟插件!边锋干橙眼ios辅助微信,八一字牌脚本(原来真的是有辅助软件)-哔哩哔哩1、下载好边锋...
2024教程"卡五星... 2024教程"卡五星辅助"都是真的是有辅助工具(有挂分析)-哔哩哔哩1、2024教程"卡五星辅助"都...
透视烘培!哈糖大菠萝攻略(透视... 透视烘培!哈糖大菠萝攻略(透视)开挂透视插件(哔哩哔哩)1、哈糖大菠萝攻略破解器简单,哈糖大菠萝攻略...
6分钟手段!hhpoker辅助... 6分钟手段!hhpoker辅助(透视)原来是真的有辅助开挂(哔哩哔哩)hhpoker辅助辅助器是一种...
第七分钟脚本!胡乐辅助脚本有哪... 第七分钟脚本!胡乐辅助脚本有哪些常见功能,多乐辅助工具(竟然是真的辅助软件)-哔哩哔哩1、全新机制【...
透视烘培!约局吧是否有挂(透视... 透视烘培!约局吧是否有挂(透视)开挂脚本app(哔哩哔哩)1、很好的工具软件,可以解锁游戏的约局吧是...