程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> OJ2.0userInfo頁面Modify邏輯bug修復,search功能邏輯實現

OJ2.0userInfo頁面Modify邏輯bug修復,search功能邏輯實現

編輯:C++入門知識

OJ2.0userInfo頁面Modify邏輯bug修復,search功能邏輯實現


這周的主要任務:userInfo頁面Modify邏輯bug修復,search功能邏輯實現。

(一)Modify邏輯bug修復:

這裡存在的bug就是在我們不重置密碼的時候按照前面的邏輯是不能提交修改,這個邏輯是錯誤的,應該改為可以不修改密碼也能提交,主要是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':{} })

對了,上次還有一個問題就是在一個表單中有多個按鈕的時候如何判斷是哪一個按鈕的提交,比如當前的userInfo頁面有Modify和Search兩個按鈕,那麼如何判斷到底是

哪一個的提交呢。在網上查了一下,一種解決方法就是給不同的submit標記不同的name,然後再如果request.POST.has_key("Modify")成立就代表提交的是Modify按鈕,否則的

話就是Search的提交了。這種方法還是比較實用的。

對於上述的Modify的邏輯的問題,主要就是先判斷如果password和confirmpassword相同且不空的時候,提交修改。在判斷兩者不相同的時候錯誤提示。在判斷兩者同為

空的時候提交修改。這樣就符合實際的情況了。

(二):UserInfo頁面搜索實現:

按照上周的預計,是要在UserInfo頁面實現一個用戶的搜索,其實原理和problemList的搜索差不多。當我們解決了一個表單中有多個按鈕的時候,那麼就是一個邏輯判斷而已。

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 = 查詢

條件),注意這裡的下劃線是兩個下劃線組成的。然後當我們獲得符合查詢要求的集合後就傳回到頁面。再在頁面展示:

      
        
          
           UserId
           Username
          
        
        
          {%for u in users %}
            
               {{u.userID}}  
              {{u.nickname}} 
           
         {% endfor %}
        
      
    

這裡生成了一個Table存放查出來的結果,然後一個{% for u in users %}循環展式查詢到的結果。就會生成一個表。然後現在的設計是點擊某一個展示項的,調到userInfo頁

面,不過沒有了查詢結果而已。

然後這周主要的任務也就這麼點代碼而已。這周進度有點慢.......。希望後面的任務能夠趕上去。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved