一 登录页面的设计
views中先定义login构造登录上下文
-
views中定义login_handle对登录传入的数据做处理及设置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) # 根据用户名查询对象 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保存后把数据进行传输。
- 设计注销用户的功能,这里清除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)
三设计用户提交订单的页面
- 此页面用户展示用户提交的订单,由购物车页面下单后转调过来,也可以从个人信息页面查看
- 根据用户订单是否支付、下单顺序进行排序
def user_center_order(request, pageid):
"""
# 此页面用户展示用户提交的订单,由购物车页面下单后转调过来,也可以从个人信息页面查看
# 根据用户订单是否支付、下单顺序进行排序
# """
#
uid = request.session.get('user_id')
#订单信息,根据是否支付、下单顺序进行排序
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)