這周的主要任務:userInfo頁面Modify邏輯bug修復,search功能邏輯實現。html
(一)Modify邏輯bug修復:session
這裏存在的bug就是在咱們不重置password的時候依照前面的邏輯是不能提交改動,這個邏輯是錯誤的,應該改成可以不改動password也能提交,主要是if邏輯推斷的改動spa
先看一下代碼:設計
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':{} })
哪個的提交呢。在網上查了一下,一種解決方法就是給不一樣的submit標記不一樣的name,而後再假設request.POST.has_key("Modify")成立就表明提交的是Modifybutton,不然的code
話就是Search的提交了。這樣的方法仍是比較有用的。htm
對於上述的Modify的邏輯的問題,主要就是先推斷假設password和confirmpassword一樣且不空的時候,提交改動。在推斷二者不一樣樣的時候錯誤提示。在推斷二者同爲對象
空的時候提交改動。這樣就符合實際的狀況了。blog
(二):UserInfo頁面搜索實現:ip
依照上週的估計,是要在UserInfo頁面實現一個用戶的搜索,事實上原理和problemList的搜索差點兒相同。當咱們攻克了一個表單中有多個button的時候,那麼就是一個邏輯推斷而已。ci
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頁
面,只是沒有了查詢結果而已。
而後這周基本的任務也就這麼點代碼而已。這周進度有點慢.......。但願後面的任務能夠遇上去。