OJ2.0userInfo页面Modify逻辑bug修复,search功能逻辑实现
这周的主要任务:userInfo页面Modify逻辑bug修复,search功能逻辑实现。
(一)Modify逻辑bug修复:
这里存在的bug就是在我们不重置password的时候依照前面的逻辑是不能提交改动,这个逻辑是错误的,应该改为能够不改动password也能提交,主要是if逻辑推断的改动
先看一下代码:
def userInfo(request, user_id):
try:
user = User.objects.get(userID = request.session['userID'])
except:
return HttpResponseRedirect("/index/login")
other = User.objects.get(userID = user_id)
if request.method == 'POST':
if request.POST.has_key("Modify"):
userID = request.session['userID']
oldPassword = request.POST['oldPassword']
password = request.POST['password']
confirmPassword = request.POST['confirmPassword']
session = request.POST['session']
specialty = request.POST['specialty']
tel = request.POST['tel']
email = request.POST['email']
nickname = request.POST['nickname']
if oldPassword != user.password:
return HttpResponse("password error")
else:
user.password = oldPassword
user.session = session
user.specialty = specialty
user.tel = tel
user.email = email
user.nickname = nickname
if password.strip() != '' and password == confirmPassword:
user.password = password
user.save()
other = User.objects.get(userID = user_id)
return render(request, 'cugbacm/userInfo.html', {'userID':request.session['userID'],'user': user, 'other':other})
else:
if password != confirmPassword:
return HttpResponse("password and confirmPassword is not the same!")
else:
user.save()
other = User.objects.get(userID = user_id)
return render(request, 'cugbacm/userInfo.html', {'userID':request.session['userID'], 'user':user, 'other':other})
else:
users = User.objects.all()
userid = request.POST['idname']
try:
if userid.strip():
users = users.filter(userID__contains = userid) #return HttpResponse(users
return render(request, 'cugbacm/userInfo.html', {'userID':request.session['userID'], 'user': user, 'other':other, 'users':users, 'idname':userid })
except :
#return HttpResponse("fuck")
return render(request, 'cugbacm/userInfo.html', {'userID':request.session['userID'],'user': user, 'other':other, 'users':{} })
else:
return render(request, 'cugbacm/userInfo.html', {'userID':request.session['userID'],'user': user, 'other':other, 'users':{} })
对了,上次另一个问题就是在一个表单中有多个button的时候怎样推断是哪一个button的提交,比方当前的userInfo页面有Modify和Search两个button,那么怎样推断究竟是
哪一个的提交呢。在网上查了一下,一种解决方法就是给不同的submit标记不同的name,然后再假设request.POST.has_key("Modify")成立就代表提交的是Modifybutton,否则的
话就是Search的提交了。这样的方法还是比較有用的。
对于上述的Modify的逻辑的问题,主要就是先推断假设password和confirmpassword同样且不空的时候,提交改动。在推断两者不同样的时候错误提示。在推断两者同为
空的时候提交改动。这样就符合实际的情况了。
(二):UserInfo页面搜索实现:
依照上周的估计,是要在UserInfo页面实现一个用户的搜索,事实上原理和problemList的搜索差点儿相同。当我们攻克了一个表单中有多个button的时候,那么就是一个逻辑推断而已。
if request.POST,has_key("Modify") else 运行搜索的过程:
users = User.objects.all()
userid = request.POST['idname']
Nickname = request.POST['idname']
try:
if userid.strip():
users = users.filter(userID__contains = userid)
#return HttpResponse(users)
return render(request, 'cugbacm/userInfo.html', {'userID':request.session['userID'], 'user': user, 'other':other, 'users':users, 'idname':userid })
except :
#return HttpResponse("fuck")
return render(request, 'cugbacm/userInfo.html', {'userID':request.session['userID'],'user': user, 'other':other, 'users':{} })
当我们推断是来自Search的请求时,首先使用request.POST["idname"]从页面取出来输入的查询条件。然后初始化user对象集合,然后使用模糊查询(属性名__contains = 查询
条件),注意这里的下划线是两个下划线组成的。然后当我们获得符合查询要求的集合后就传回到页面。再在页面展示:
<div class = "table-responsive" style = "padding-top:58px">
<table cellpadding = "10" cellspacing = "0" class = "display" id = "example">
<thead>
<tr>
<th>UserId</th>
<th>Username</th>
</tr>
</thead>
<tbody>
{%for u in users %}
<tr class="odd gradeX">
<td> <a href = "/index/userInfo/{{u.userID}}">{{u.userID}} </a> </td>
<td>{{u.nickname}} </td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
这里生成了一个Table存放查出来的结果,然后一个{% for u in users %}循环展式查询到的结果。就会生成一个表。然后如今的设计是点击某一个展示项的,调到userInfo页
面,只是没有了查询结果而已。
然后这周基本的任务也就这么点代码而已。这周进度有点慢.......。希望后面的任务可以赶上去。
OJ2.0userInfo页面Modify逻辑bug修复,search功能逻辑实现的更多相关文章
- JXLS 2.4.0系列教程(五)——更进一步的应用和页面边距bug修复
注:本文代码建立于前面写的代码.不过不看也不要紧. 前面的文章把JXLS 2.4.0 的基本使用写了一遍,现在讲讲一些更进一步的使用方法.我只写一些我用到过的方法,更多的高级使用方法请参考官网. ht ...
- Saiku Table展示数据合并bug修复(二十五)
Saiku Table展示数据合并bug修复 Saiku以table的形式展示数据,如果点击了 非空的字段 按钮,则会自动进行数据合并,为空的数据行以及数据列都会自动隐藏掉. 首先我们应该定位问题: ...
- 仿酷狗音乐播放器开发日志十九——CTreeNodeUI的bug修复二(附源码)
转载请说明原出处,谢谢 今天本来打算把仿酷狗播放列表的子控件拖动插入功能做一下,但是仔细使用播放列表控件时发现了几个逻辑错误,由于我的播放 列表控件是基于CTreeViewUI和CTreeNodeUI ...
- 微信小程序(有始有终,全部代码)开发---跑步App+音乐播放器 Bug修复
开篇语 昨晚发了一篇: <简年15: 微信小程序(有始有终,全部代码)开发---跑步App+音乐播放器 > 然后上午起来吃完午饭之后,我就准备继续开工的,但是突然的,想要看B站.然后在一股 ...
- 高大上网站-CSS3总结1-图片2D处理以及BUG修复
高大上网站-CSS3总结1-图片2D处理以及BUG修复 一,前言: 现在的前端UI相对JS来说,重视并不够. 但是CSS3提供的新特性,将现在的网站赤裸裸的划分为两类:一类还在写着老旧样式,或者通过b ...
- 批量打回未报bug修复
半天写完了代码,从此开始了三天的bug修复... 问题背景:从合同系统那边获取数据. 1.开发完后,利用mock模拟合同数据,获取(mock中的合同)数据成功,但是在解析合同数据时出错,原因,mock ...
- (Bug修复)C#爬虫,让你不再觉得神秘
Bug修复 https://github.com/ZhangQueque/quewaner.Crawler/issues/1 修复加载Https网址中午乱码,导致Node解析失败的问题 1.使用第三方 ...
- cocos2d-x多分辨率和随后的自适应CCListView的bug修复
cocos2d-x多分辨率自适配及因此导致的CCListView的bug修复 cocos2d-x是一款众所周知的跨平台的游戏开发引擎.因为其跨平台的特性.多分辨率支持也自然就有其需求. 因此.在某一次 ...
- android-misc-widgets四向(上下左右)抽屉bug修复版--转载
android-misc-widgets四向(上下左右)抽屉bug修复版 2013-08-04 08:58:13 标签:bug down top panel slidingdrawer 原创作品,允 ...
随机推荐
- MVC5富文本编辑器CKEditor配置CKFinder
富文本编辑器CKEditor的使用 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: ...
- EF加载实体的方式
原文:Loading Related Entities EF加载数据的方式: 预加载 eager loading 延迟加载 lazy loading 显示加载 explicit loading 预先加 ...
- FineUI页面布局
使用布局的优势 相对于为控件设置固定的宽度和高度,布局的重要意义在于子控件可以根据父控件的尺寸自动设置自己的尺寸,在页面尺寸改变时同样有效.如果你在项目中遇到类似如下的需求,就需要考虑布局了: 面板填 ...
- android内存优化之图片压缩和缓存
由于手机内存的限制和网络流量的费用现在,我们在加载图片的时候,必须要做好图片的压缩和缓存. 图片缓存机制一般有2种,软引用和内存缓存技术. 1.压缩图片:压缩图片要既不能模糊,也不能拉伸图片. 图片操 ...
- createjs基础
<canvas id="gameView" width="400px" height="400px" style="back ...
- hdu Big Number 求一个数的位数
Problem Description In many applications very large integers numbers are required. Some of these app ...
- C++访问声明
代码: #include <iostream> #include <string> using namespace std; struct B{ private: int s; ...
- KMP算法———模板
做出KMP字符串匹配算法心情也是好好哒,萌萌哒. 感谢黄学长,感谢栋栋! #include<cstdio>#include<string>#include<iostrea ...
- winPcap_1_开篇
什么是WinPcap WinPcap是一个基于Win32平台的,用于捕获网络数据包并进行分析的开源库. 因为有些应用程序需要直接访问网络中的数据包.也就是说,那些应用程序需要访问原始数据包,即没有被操 ...
- 【转】10 个迅速提升你 Git 水平的提示
最近我们推出了两个教程:熟悉Git的基本功能和让你在开发团队中熟练的使用Git . 我们所讨论的命令足够一个开发者在Git使用方面游刃有余.在这篇文章中,我们试图探索怎样有效的管理你的时间和充分的使用 ...