一 登錄頁面的設計
views中先定義login構造登錄上下文
-
views中定義login_handle對登錄傳入的數(shù)據(jù)做處理及設置cookie值等功能
views.py def login(request): uname = request.COOKIES.get('uname','') context = {'title':'用戶登錄','erorr_name':0,'error pwd ':0,'uname':uname} return render(request,'df_user/login.html',context) def login_handle(request): # 接收請求信息 get = request.POST uname = get.get('username') upwd = get.get('pwd') jizhu = get.get('jizhu', 0) # 根據(jù)用戶名查詢對象 users = UserInfo.objects.filter(uname=uname) # print uname # 判斷如果未查到則用戶名錯,查到再判斷密碼是否正確,正確則轉到用戶中心 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 # 記住用戶名 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': '用戶登錄', 'error_name': 0, 'error_pwd': 1, 'uname': uname} return render(request, 'df_user/login.html', context) else: context = {'title': '用戶登錄', 'error_name': 1, 'error_pwd': 0, 'uname': uname } return render(request, 'df_user/login.html', context)
二 設計登錄后的用戶info頁面
- info的頁面要顯示郵箱蒲牧,用戶姓名仿粹,等信息杯道,所以在views中的info構造context上下文
- 構造用戶的收貨地址垛膝,這里需要用戶全部信息锤灿,save保存后把數(shù)據(jù)進行傳輸赘艳。
- 設計注銷用戶的功能酌毡,這里清除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': '用戶中心', 'user': user,'page_name':1,'site':1}
return render(request, 'df_user/user_center_site.html', context)
三設計用戶提交訂單的頁面
- 此頁面用戶展示用戶提交的訂單,由購物車頁面下單后轉調(diào)過來蕾管,也可以從個人信息頁面查看
- 根據(jù)用戶訂單是否支付枷踏、下單順序進行排序
def user_center_order(request, pageid):
"""
# 此頁面用戶展示用戶提交的訂單,由購物車頁面下單后轉調(diào)過來娇掏,也可以從個人信息頁面查看
# 根據(jù)用戶訂單是否支付呕寝、下單順序進行排序
# """
#
uid = request.session.get('user_id')
#訂單信息,根據(jù)是否支付婴梧、下單順序進行排序
orderinfos = OrderInfo.objects.filter(
user_id=uid).order_by('zhifu', '-oid')
#
# 分頁
#獲取orderinfos list 以兩個為一頁的 list
paginator = Paginator(orderinfos, 2)
#獲取 上面集合的第 pageid 個 值
orderlist = paginator.page(int(pageid))
#獲取一共多少 頁
plist = paginator.page_range
#3頁分頁顯示
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
#
#
#
# 構造上下文
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)