这周的主要任务: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功能逻辑实现的更多相关文章

  1. JXLS 2.4.0系列教程(五)——更进一步的应用和页面边距bug修复

    注:本文代码建立于前面写的代码.不过不看也不要紧. 前面的文章把JXLS 2.4.0 的基本使用写了一遍,现在讲讲一些更进一步的使用方法.我只写一些我用到过的方法,更多的高级使用方法请参考官网. ht ...

  2. Saiku Table展示数据合并bug修复(二十五)

    Saiku Table展示数据合并bug修复 Saiku以table的形式展示数据,如果点击了 非空的字段 按钮,则会自动进行数据合并,为空的数据行以及数据列都会自动隐藏掉. 首先我们应该定位问题: ...

  3. 仿酷狗音乐播放器开发日志十九——CTreeNodeUI的bug修复二(附源码)

    转载请说明原出处,谢谢 今天本来打算把仿酷狗播放列表的子控件拖动插入功能做一下,但是仔细使用播放列表控件时发现了几个逻辑错误,由于我的播放 列表控件是基于CTreeViewUI和CTreeNodeUI ...

  4. 微信小程序(有始有终,全部代码)开发---跑步App+音乐播放器 Bug修复

    开篇语 昨晚发了一篇: <简年15: 微信小程序(有始有终,全部代码)开发---跑步App+音乐播放器 > 然后上午起来吃完午饭之后,我就准备继续开工的,但是突然的,想要看B站.然后在一股 ...

  5. 高大上网站-CSS3总结1-图片2D处理以及BUG修复

    高大上网站-CSS3总结1-图片2D处理以及BUG修复 一,前言: 现在的前端UI相对JS来说,重视并不够. 但是CSS3提供的新特性,将现在的网站赤裸裸的划分为两类:一类还在写着老旧样式,或者通过b ...

  6. 批量打回未报bug修复

    半天写完了代码,从此开始了三天的bug修复... 问题背景:从合同系统那边获取数据. 1.开发完后,利用mock模拟合同数据,获取(mock中的合同)数据成功,但是在解析合同数据时出错,原因,mock ...

  7. (Bug修复)C#爬虫,让你不再觉得神秘

    Bug修复 https://github.com/ZhangQueque/quewaner.Crawler/issues/1 修复加载Https网址中午乱码,导致Node解析失败的问题 1.使用第三方 ...

  8. cocos2d-x多分辨率和随后的自适应CCListView的bug修复

    cocos2d-x多分辨率自适配及因此导致的CCListView的bug修复 cocos2d-x是一款众所周知的跨平台的游戏开发引擎.因为其跨平台的特性.多分辨率支持也自然就有其需求. 因此.在某一次 ...

  9. android-misc-widgets四向(上下左右)抽屉bug修复版--转载

     android-misc-widgets四向(上下左右)抽屉bug修复版 2013-08-04 08:58:13 标签:bug down top panel slidingdrawer 原创作品,允 ...

随机推荐

  1. DEV GridControl 鼠标单击事件

    private void gridView1_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e) { ...

  2. 《第一行代码》学习笔记7-活动Activity(5)

    1.Intent中只能指定一个action,但却能指定多个category. 2.使用隐式Intent,不仅可以启动自己程序内的活动,还可以启动其他程序的活动,使得Android应用程序之间 的功能共 ...

  3. Ztree中simpleData是怎么转换成标准ztree数组对象的

    今天遇到一个自己构造树的情况,树是动态的,预先不知道根节点,用的是easyUI中的tree,于是参考了下Ztree中的实现,恍然大悟,遂记之: transformTozTreeFormat: func ...

  4. Sql 函数大全 (更新中...由难到简

    1.字符处理类: 1.1 指定指定字符输出的次数 ) 结果:1a1a1a1a1a (5个1a)

  5. photoSlider-html5原生js移动开发轮播图-相册滑动插件

    简单的移动端图片滑动切换浏览插件 分别引用css文件和js文件 如: <link rel="stylesheet" type="text/css" hre ...

  6. 了不起的分支和循环01 - 零基础入门学习Python007

    了不起的分支和循环01 让编程改变世界 Change the world by program 我们今天的主题是"了不起的分支和循环",为什么小甲鱼不说C语言,不说Python了不 ...

  7. OpenCV-ubuntu-install

    1.安装一些依赖库 sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg6 ...

  8. LoadRunner参数化功能详解

    更新方式: .      Each Occurrence 每次遇到参数就进行更新. 多次使用同一参数,而且没有什么关联,例如随机数. Each Iteration 每次迭代时发生更新. 如果参数出现几 ...

  9. Latch-up 閂鎖效應 & 靜電放電模式

    * * Latch-up 閂鎖效應, 又稱寄生PNPN效應或可控矽整流器 ( SCR, Silicon Controlled Rectifier ) 效應. 在整體矽的CMOS 管下, 不同極性攙雜的 ...

  10. python 程序穩定性閒談-續集

    前文再續,書接上一回.上次總結python錯誤碼返回與異常機制共用的一些原則,毫無疑問地,仍會出現程序不穩定的現象(好吧,可能是我個人能力問題).在公司做的一個項目中,出現了因爲使用外部模塊造成pyt ...