一 登錄頁(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)