Python3后端--34--Django项目的个人中心页

如果直接阅读本文,您可能有些不知所云,这是因为我用很多篇幅讲了一个事情,如果想知道上下文,那么建议您从本专栏第22章看起:Python3开发–22–了解Django框架

一、个人中心页

在我们的Django项目登录成功之后,网站会自动跳转到个人中心页面,个人中心页我们设计了4个功能区:商品搜索功能、网站导航、用户基本信息、订单信息。

1、修改代码:shopper/views.py

from django.shortcuts import render, redirect
from .models import *
from django.core.paginator import Paginator
from django.core.paginator import EmptyPage
from django.core.paginator import PageNotAnInteger
from django.contrib.auth.decorators import login_required
from django.contrib.auth import logout, login, authenticate
from django.shortcuts import reverse

def loginView(request):
	# 之前已讲解

# login_required设置用户登录访问权限,未登录情况下访问会自动跳转到指定路由地址
@login_required(login_url='/shopper/login.html')
def shopperView(request):
    # 变量title和classContent分别对应模板base.html中的模板变量title和classContent
    title = '个人中心'
    classContent = 'informations'
    fenye = request.GET.get('fenye', 1)
    # 处理已支付的订单
    shaixuan = request.GET.get('shaixuan', '')
    payTime = request.session.get('payTime', '')
    if shaixuan and payTime and shaixuan == payTime:
        payInfo = request.session.get('payInfo', '')
        OrderInfos.objects.create(**payInfo)
        del request.session['payTime']
        del request.session['payInfo']
    # 根据当前用户查询用户订单信息
    orderInfos = OrderInfos.objects.filter(user_id=request.user.id).order_by('-created')
    # 分页功能
    paginator = Paginator(orderInfos, 7)
    try:
        pages = paginator.page(fenye)
    except PageNotAnInteger:
        pages = paginator.page(1)
    except EmptyPage:
        pages = paginator.page(paginator.num_pages)
    return render(request, 'shopper.html', locals())

def logoutView(request):
    logout(request)
    return redirect(reverse('index:index'))

def shopcartView():
    pass

2、修改代码:templates/shopper.html

<!-- 调用模板文件base.html并重写接口content -->
{% extends 'base.html' %}
{% load static %}
{% block content %}
    <div class="info-list-box">
      <div class="info-list">
        <div class="item-box layui-clear" id="list-cont">
          <div class="item">
            <div class="img">
              <img src="{% static 'img/portrait.png' %}">
            </div>
            <div class="text">
              <h4>用户:{{ user.username }}</h4>
              <p class="data">登录时间:{{ user.last_login }}</p>
			  <div class="left-nav">
				  <div class="title">
					<a href="{% url 'shopper:shopcart' %}">我的购物车</a>
				  </div>
				  <div class="title">
					<a href="{% url 'shopper:logout' %}">退出登录</a>
				  </div>
			  </div>
            </div>
          </div>

          <!-- 遍历变量pages的object_list方法生成商品列表 -->
          <div class="item1">
		    <div class="cart">
              <div class="cart-table-th">

                  <div class="th th-item">
                    <div class="th-inner">
                      订单编号
                    </div>
                  </div>
                  <div class="th th-price">
                    <div class="th-inner">
                      订单价格
                    </div>
                  </div>
                  <div class="th th-amount">
                    <div class="th-inner">
                      购买时间
                    </div>
                  </div>
                  <div class="th th-sum">
                    <div class="th-inner">
                      订单状态
                    </div>
                  </div>
                </div>
                <div class="OrderList">
                  <div class="order-content" id="list-cont">
                    {% for p in pages.object_list %}
                    <ul class="item-content layui-clear">
                      <li class="th th-item">{{ p.id }}</li>
                      <li class="th th-price">¥{{ p.price|floatformat:'2' }}</li>
                      <li class="th th-amount">{{ p.created }}</li>
                      <li class="th th-sum">{{ p.state }}</li>
                    </ul>
                    {% endfor %}
                  </div>
                </div>
            </div>
          </div>
        </div>
	  </div>

      <!-- 使用变量pages的方法实现分页功能列表 -->
      <div id="demo0" style="text-align: center;">
            <div class="layui-box layui-laypage layui-laypage-default" id="layui-laypage-1">
                {% if pages.has_previous %}
                    <a href="{% url 'shopper:shopper' %}?p={{ pages.previous_page_number }}" class="layui-laypage-prev">上一页</a>
                {% endif %}

                {% for page in pages.paginator.page_range %}
                    {% if pages.number == page %}
                        <span class="layui-laypage-curr"><em class="layui-laypage-em"></em><em>{{ page }}</em></span>
                    {% elif pages.number|add:'-1' == page or pages.number|add:'1' == page %}
                        <a href="{% url 'shopper:shopper' %}?p={{ page }}">{{ page }}</a>
                    {% endif %}
                {% endfor %}

                {% if pages.has_next %}
                    <a href="{% url 'shopper:shopper' %}?p={{ pages.pages.next_page_number }}" class="layui-laypage-next">下一页</a>
                {% endif %}
            </div>
      </div>
  </div>
{% endblock content %}

{% block script %}
  layui.config({
    base: '{% static 'js/' %}'
  }).use(['mm','laypage'],function(){
      var mm = layui.mm,laypage = layui.laypage;
});
{% endblock script %}

二、总结

看看本节我们动过哪些代码文件:

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

武天旭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值