02-登錄功能的實(shí)現(xiàn)

一 登錄頁(yè)面的設(shè)計(jì)

  • views中先定義login構(gòu)造登錄上下文

  • views中定義login_handle對(duì)登錄傳入的數(shù)據(jù)做處理及設(shè)置cookie值等功能

     views.py
     def login(request):
         uname = request.COOKIES.get('uname','')
         context = {'title':'用戶(hù)登錄','erorr_name':0,'error pwd ':0,'uname':uname}
         return  render(request,'df_user/login.html',context)
    
    
     def login_handle(request):
         # 接收請(qǐng)求信息
         get = request.POST
         uname = get.get('username')
         upwd = get.get('pwd')
         jizhu = get.get('jizhu', 0)
         # 根據(jù)用戶(hù)名查詢(xún)對(duì)象
         users = UserInfo.objects.filter(uname=uname)
         # print uname
         # 判斷如果未查到則用戶(hù)名錯(cuò),查到再判斷密碼是否正確,正確則轉(zhuǎn)到用戶(hù)中心
         if len(users) == 1:
             s1 = sha1()
             s1.update(upwd.encode('utf8'))
             #登錄帶cookie值   必須 red = HttpResponseRedirect    red.set_cookie  renturn red
             if s1.hexdigest() == users[0].upwd:
                 red = HttpResponseRedirect('/user/info')
                 # count = CartInfo.objects.filter(user_id=users[0].id).count()
    
                 # print '*'*10
                 # print count
                 # 記住用戶(hù)名
                 if jizhu != 0:
                     red.set_cookie('uname', uname)
                 else:
                     red.set_cookie('uname', '', max_age=-1)
                 request.session['user_id'] = users[0].id
                 request.session['user_name'] = uname
                 # request.session['count'] = count
                 return red
             else:
                 context = {'title': '用戶(hù)登錄', 'error_name': 0, 'error_pwd': 1, 'uname': uname}
                 return render(request, 'df_user/login.html', context)
         else:
             context = {'title': '用戶(hù)登錄', 'error_name': 1, 'error_pwd': 0, 'uname': uname }
             return render(request, 'df_user/login.html', context)
    

二 設(shè)計(jì)登錄后的用戶(hù)info頁(yè)面

  • info的頁(yè)面要顯示郵箱,用戶(hù)姓名,等信息,所以在views中的info構(gòu)造context上下文
  • 構(gòu)造用戶(hù)的收貨地址,這里需要用戶(hù)全部信息,save保存后把數(shù)據(jù)進(jìn)行傳輸。
  • 設(shè)計(jì)注銷(xiāo)用戶(hù)的功能,這里清除cookie
views.py
def logout(request):
      request.session.flush()
      return redirect('/')
 
def site(request):
    user = UserInfo.objects.get(id=request.session['user_id'])
    if request.method == 'POST':
        post = request.POST
        user.ushou = post.get('ushou')
        user.uaddress = post.get('uaddress')
        user.uphone = post.get('uphone')
        user.uyoubian = post.get('uyoubian')
        user.save()
    context = {'title': '用戶(hù)中心', 'user': user,'page_name':1,'site':1}
    return render(request, 'df_user/user_center_site.html', context)

三設(shè)計(jì)用戶(hù)提交訂單的頁(yè)面

  • 此頁(yè)面用戶(hù)展示用戶(hù)提交的訂單,由購(gòu)物車(chē)頁(yè)面下單后轉(zhuǎn)調(diào)過(guò)來(lái),也可以從個(gè)人信息頁(yè)面查看
  • 根據(jù)用戶(hù)訂單是否支付、下單順序進(jìn)行排序
def user_center_order(request, pageid):
    """
    # 此頁(yè)面用戶(hù)展示用戶(hù)提交的訂單,由購(gòu)物車(chē)頁(yè)面下單后轉(zhuǎn)調(diào)過(guò)來(lái),也可以從個(gè)人信息頁(yè)面查看
    # 根據(jù)用戶(hù)訂單是否支付、下單順序進(jìn)行排序
    # """
    #
    uid = request.session.get('user_id')
    #訂單信息,根據(jù)是否支付、下單順序進(jìn)行排序
    orderinfos = OrderInfo.objects.filter(
        user_id=uid).order_by('zhifu', '-oid')
    #
    # 分頁(yè)
    #獲取orderinfos list  以?xún)蓚€(gè)為一頁(yè)的 list
    paginator = Paginator(orderinfos, 2)
    #獲取 上面集合的第 pageid 個(gè) 值
    orderlist = paginator.page(int(pageid))
    #獲取一共多少 頁(yè)
    plist = paginator.page_range
    #3頁(yè)分頁(yè)顯示
    qian1 = 0
    hou = 0
    hou2 = 0
    qian2 = 0
    # dd = dangqian ye
    dd = int(pageid)
    lenn = len(plist)
    if dd>1:
        qian1 = dd-1
    if dd>=3:
        qian2 = dd-2
    if dd<lenn:
        hou = dd+1
    if dd+2<=lenn:
        hou2 = dd+2
    #
    #
    #
    # 構(gòu)造上下文
    context = {'page_name': 1, 'title': '全部訂單', 'pageid': int(pageid),
               'order': 1, 'orderlist': orderlist, 'plist': plist,
               'pre':qian1,'next':hou,'pree':qian2,'lenn':lenn,'nextt':hou2}

    return render(request, 'df_user/user_center_order.html',context)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,680評(píng)論 19 139
  • 目錄Cookie機(jī)制什么是CookieCookie的不可跨域名性Unicode編碼:保存中文BASE64編碼:保存...
    Tomatoro閱讀 17,049評(píng)論 7 186
  • 作為UI設(shè)計(jì)師,我們經(jīng)常在做設(shè)計(jì)稿的時(shí)候需要做一些移動(dòng)端的banner,要求經(jīng)常是“你看著來(lái),看上去有格調(diào)、高大上...
    Jkarakorum閱讀 2,450評(píng)論 9 60
  • 其實(shí)很多人喜歡說(shuō)自己有強(qiáng)迫癥,很糾結(jié)一件事情會(huì)發(fā)展成為強(qiáng)迫癥,對(duì)某些細(xì)節(jié)過(guò)分苛求是強(qiáng)迫癥,總懷疑自己沒(méi)有鎖好車(chē)門(mén)和...
    伊米醬閱讀 1,378評(píng)論 0 0
  • 一個(gè)談人性,一個(gè)談學(xué)識(shí)。 兩個(gè)都有深度的人
    黑騎士_路西法_丸子閱讀 227評(píng)論 0 0

友情鏈接更多精彩內(nèi)容