当前位置: 首页 > 后端技术 > Python

Django的简单用户系统(三)

时间:2023-03-26 13:54:33 Python

[toc]1.总体设计思路一套简单的用户管理系统,包括但不限于以下功能:用户添加:用于创建新用户;用户查询:用于查询用户信息;用户修改:用于修改用户信息;用户删除:用于删除用户信息;最基本的功能包括增、删、改、查。想要搭建好的系统,前期一定要设计一套思路,按照上图入座即可。接下来开始实战……抓紧重点,一定要做,一定要做到,一定要做到……2.搭建一个简单的用户系统如果有同学没有研究过上两篇文章,请抓紧时间学习,然后阅读本文。2.1配置模型Modelhello\\models.py创建一个类对象,相当于数据中的一个表。#创建数据库用户表classUser(models.Model):#性别,下拉框的元组sex=((0,'male'),(1,'female'))#usernameusername=models.CharField(max_length=20,help_text='username')#userpasswordpassword=models.CharField(max_length=16,help_text='userpassword')#sex中的0和1存入数据库,中文男女在web前面-enddisplaysex=models.IntegerField(choices=sex,null=True,blank=True)#手机号码phone=models.CharField(max_length=11,help_text='手机号码')#对象获取的返回值为用户名def__str__(self):返回self.username2。2写入数据库:后台会转换成sql语句写入数据库。是不是看起来很方便,不需要太懂sql,这也是ORM的强项。(py369)[root@localhostdevops]#pythonmanage.pymakemigrationshelloMigrationsfor'hello':hello/migrations/0005_auto_20201105_2336.py-CreatemodelUser-Alterfieldidondevices(py369)[root@localhostdevops]#pythonmanage.pymigrateOperationstoperform:Applyallmigrations:admin,auth,contenttypes,hello,sessionsRunningmigrations:Applyinghello.0005_auto_20201105_2336...OK2.3数据库验证表:我通过NavicatPremium工具连接数据库进行可视化查看,你可以使用任何一个工具都可以。2.4路由URL配置:hello\\urls.pyname='xxxx',这是命名空间的用法,模板中经常使用:hello:adduser,相当于hello/adduser.html,好处是不用不得不担心你的路径被随机改变。fromdjango.urlsimportpathfromdjango.urlsimportre_pathfromhelloimportviewapp_name='hello'urlpatterns=[#FBV,通过增删改查的方??式#addpath('adduser/',view.adduser,name="adduser"),#查询路径('showuser/',view.showuser,name="showuser"),#修改re_path('edituser/(?P[0-9]+)?/',view.edituser,name="edituser"),#删除re_path('deluser/(?P[0-9]+)?/',view.deluser,name="deluser"),]2.5添加后台执行用户脚本配置:hello\\view.pyfromdjango.shortcutsimportrenderfromdjango.httpimportHttpResponse,QueryDictfromdjango.shortcutsimportget_object_or_404fromdjango.httpimportHttp404fromhello.modelsimportUserimporttraceback#userincreasefunctiondef=if}add(request.method=='POST':try:print(request.POST)#将数据转换为字典格式data=request.POST.dict()#一次性将数据写入数据库User.objects.create(**data)msg={'code':0,'result':'用户已成功添加。'}except:msg={'code':1,'result':'Failedtoadduser:'.format(traceback.format_exc())}returnrender(request,"hello/adduser.html",{'msg':msg})查看模板配置:templates\\hello\\adduser.html{%extends"base.html"%}{%blocktitle%}useradded{%endblock%}{%blockbody%}{%ifmsg.code==0%}{{msg.result}}

{%else%}{{msg.result}}

{%endif%添加用户信息
用户:

密码:

手机号码:

性别:

submitreset
{%endblock%}前端显示效果如下:打开浏览器并输入以下链接格式:http://ip/hello/adduser用户提交,后台数据库验证:认真填写信息后,点击提交,成功则显示用户添加成功,您可以去后台DB验证我一口气创建了6个用户,我任性。备注:请忽略数据库表中的密码是明文的,后续实战中会是密文的,不用担心密码泄露。2.6用户查询后台执行脚本配置:hello\\view.py#新建代码块#用户查看函数defshowuser(request):#http://192.168.8.130:8888/hello/showuser/?keyword=test001#获取key位置参数,获取唯一值,''表示默认参数,防止出错keyword=request.GET.get('keyword','')#获取所有数据users=User.objects.all()#如果keyposition参数不为空ifkeyword:#用户名不区分大小写过滤users=users.filter(username__icontains=keyword)#return返回两个参数'users'和'keyword'给前端returnrender(request,'hello/showuser.html',{'users':users,'keyword':keyword})查看模板配置:templates\\hello\\showuser.html{%extends"base.html"%}{%blocktitle%}Userquery{%endblock%}{%blockbody%}查询用户信息
搜索ID用户名密码手机号码th>性别操作
{%foruserinusers%}{{用户。id}}{{用户。用户名}}{{用户。密码}}{{user.phone}}{%ifuser.sex==0%}男性{%elifuser.sex==1%}女性{%else%}none{%endif%}更新删除{%endfor%}
{%endblock%}前端显示效果如下:查询用户,显示如下:此时后台按username过滤,后面我们再过滤通过Q方法实现多个字段2.7用户修改后台执行脚本配置:hello/view.py关键说明:无论是用户查询还是删除,关键是用ID(数据库中的主键)进行操作,不使用其他字段。#新代码,用户修改函数defedituser(request,**kwargs):msg={}pk=kwargs.get('pk','')#先检查pk是否存在,不存在则报404错误user=get_object_or_404(User,pk=pk)ifrequest.method=='POST':try:data=request.POST.dict()User.objects.filter(pk=pk).update(**data)msg??={'code':0,'result':'用户更新成功'}except:msg={'code':1,'result':'Userupdatefailed:'.format(traceback.format_exc())}returnrender(request,'hello/edituser.html',{'user':user,'msg':msg})查看模板配置templates\\hello\\edituser.html{%extends"base.html"%{%blocktitle%}Updateuser{%endblock%}{%blockbody%}{%ifmsg.code==0%}{{msg.result}}

{%else%}{{msg.result}}

{%endif%}更新你服务信息<br>用户名:

密码:

手机号码:

性别:{%ifuser.sex==0%}男{%else%}男{%endif%}

提交</div>{%endblock%}前端显示效果如下:在用户列表的操作项中,点击更新跳转到该页面:修改用户,显示如下:更改性别用户名test006为男,结果如下:当pk不存在时,测试结果如下:后台数据库查表校验:2.8用户删除后台执行脚本配置hello\\view.py#添加code,userdeletefunctiondefdeluser(request,**kwargs):msg={}pk=kwargs.get('pk','')try:#获取单个用户信息user=User.objects.get(pk=pk)exceptUser.DoesNotExist:#如果用户不存在,返回404错误raiseHttp404ifrequest.method=='POST':try:User.objects.get(pk=pk).delete()msg??={'code':0,'result':'Userhasbeensuccessfuldeleted'}except:msg={'code':1,'result':'Userdeletionfailed:'.format(traceback.format_exc())}返回渲染(请求,'hello/deluser.html',{'user':user,'msg':msg})查看模板配置templates\\hello\\deluser.html{%extends"base.html"%}{%blocktitle%}删除用户信息{%endblock%}{%blockbody%}{%ifmsg.code==0%}{{消息。结果}}{{使用r.username}}

{%else%}{{msg.result}}

{%endif%}删除用户信息确定要删除{{user.username}}吗?确定
{%endblock%}删除一个用户,如下图:在用户列表的操作项,点击删除,点击确定,成功返回`:deletefailed效果如下:至此,一个简单的用户系统就完成了,是不是看起来很简单,大家照着做吧,有什么问题欢迎大家一起讨论,谢谢如果你觉得这篇文章是不错,请点赞或分享到朋友圈!如果喜欢我的文章,请关注我公众号:滴滴技术,扫码关注,不定时分享