使用Django搭建网站实现商品分页功能

下面是使用Django搭建网站实现商品分页功能的完整攻略。

前置知识

在实现商品分页功能之前,需要了解以下知识:

  • Django框架基本概念和使用方法
  • Django中模型(Model)的概念和使用方法
  • Django中视图(View)的概念和使用方法
  • Django中模板(Template)的概念和使用方法
  • HTML和CSS的基础知识

实现步骤

  1. 创建Django项目和应用

在终端中输入以下命令创建Django项目和应用:

django-admin startproject mysite
python manage.py startapp products
  1. 定义商品模型

在products应用中的models.py文件中定义商品模型。其中,需要注意的是:为了实现分页功能,需要使用Django提供的分页器类Paginator。

示例代码:

from django.db import models
from django.core.paginator import Paginator

class Product(models.Model):
    name = models.CharField(max_length=255)
    price = models.DecimalField(max_digits=10, decimal_places=2)
    description = models.TextField()

    def __str__(self):
        return self.name
  1. 编写视图函数

在products应用中的views.py文件中编写视图函数。其中,需要使用Django提供的分页器类Paginator来实现分页功能。

示例代码:

from django.shortcuts import render, get_object_or_404
from django.core.paginator import Paginator
from .models import Product

def product_list(request):
    products_list = Product.objects.all()
    paginator = Paginator(products_list, 6) #每页展示6个商品
    page = request.GET.get('page')
    products = paginator.get_page(page)
    return render(request, 'products/product_list.html', {'products': products})
  1. 编写模板

在products应用中创建templates/products目录,并在其中创建product_list.html文件,用于显示商品列表页面。在模板文件中,需要使用Django提供的for循环语句和if语句来显示商品列表和分页导航。

示例代码:

{% extends 'base.html' %}

{% block content %}
    <h1>Products</h1>

    {% for product in products %}
        <h2>{{ product.name }}</h2>
        <p>{{ product.price }}</p>
        <p>{{ product.description }}</p>
    {% empty %}
        <p>没有任何商品!</p>
    {% endfor %}

    <div class="pagination">
      <span class="step-links">
          {% if products.has_previous %}
              <a href="?page=1">&laquo; 第一页</a>
              <a href="?page={{ products.previous_page_number }}">上一页</a>
          {% endif %}

          <span class="current-page">
              第 {{ products.number }} 页,共 {{ products.paginator.num_pages }} 页
          </span>

          {% if products.has_next %}
              <a href="?page={{ products.next_page_number }}">下一页</a>
              <a href="?page={{ products.paginator.num_pages }}">最后一页 &raquo;</a>
          {% endif %}
      </span>
    </div>
{% endblock %}
  1. 配置URL

在products应用中的urls.py文件中配置URL路由。在这里,我们可以将product_list视图函数和/products/路径关联起来。

示例代码:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.product_list, name='product_list'),
]
  1. 运行项目

在终端中输入以下命令运行项目:

python manage.py runserver

在浏览器中输入http://127.0.0.1:8000/products/就可以看到实现了商品列表分页的网页啦!

示例说明

下面是两条示例说明:

示例1

如果你想每页展示8个商品而不是6个,可以在views.py中的分页器Paginator的构造函数中传入参数8:

paginator = Paginator(products_list, 8) #每页展示8个商品

示例2

如果你想将商品列表按照价格从高到低进行排序的话,在views.py中将products_list赋值为排序结果即可。

products_list = Product.objects.all().order_by('-price')

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用Django搭建网站实现商品分页功能 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • django添加跨域头

    一、什么是跨域 浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域 二、浏览器的同源策略 同源策略限制了从同一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文件的重要安全机制 三、同源的定义 如果两个页面的协议,端口(如果有指定)和主机都相同,则两个页面具有相同的源。我们也可以把它称为“协议/主…

    Django 2023年4月11日
    00
  • Python之Web框架Django项目搭建全过程

    下面是Python之Web框架Django项目搭建全过程的完整攻略。 1. 确定项目名称和目录结构 首先要确定项目的名称,比如”blog”,然后在命令行终端中执行以下命令: mkdir blog cd blog 进入到项目目录中。 2. 创建虚拟环境 为了避免与其他项目的依赖冲突,建议使用虚拟环境。可以使用以下命令创建一个虚拟环境: python3 -m v…

    Django 2023年5月16日
    00
  • Django—Form两种保留用户提交数据的方法

    用户在网页上进行表单填写时,有可能出现某项填写错误。一般情况下,用户在未发觉错误的情况下点击提交,则此表单的内容会清空,用户不得不再重新填写,这样的用户体验是及其糟糕的。 在此,我们有2种方法将用户的输入保存下来,一旦填写错误,只需要将错误项修改即可重新提交。 一、利用Form生成Html标签 1. views.py 1 from django.shortc…

    Django 2023年4月10日
    00
  • Django 将数据库查出的 QuerySet 对象转换为 json 字符串

    通过Django查询出MySQL数据库的数据,并将查询出的QuerySet 对象转化成 json 字符串。 写这个例子的作用主要是用来为手机端提供接口用,记录一下,以后 说不准 肯定能用到!   —————-  这是一条人工分界线———————-   1.  假如只查询其中一条数据的对象转换为 json 字符串…

    Django 2023年4月9日
    00
  • django 修改 request 对象中的请求参数, 并重新赋值给 request 对象

    直接上代码, 实现流程看代码及注释 def your_view(self, request): method = request.method if method == “GET”: # 使用 querydict对象的copy()方法, 获取一个可修改的querydict data = request.GET.copy() # 修改参数值 data = pa…

    Django 2023年4月9日
    00
  • Djang中静态文件配置方法

    在Django中,静态文件(如CSS、JavaScript、图片等)是指不随着页面内容的变化而发生改变的文件。下面将详细讲解在Django中如何配置静态文件。 静态文件配置方法 第一步:在settings.py中设置静态文件路径 在Django项目的settings.py文件中,可以通过STATICFILES_DIRS、STATIC_ROOT、STATIC_…

    Django 2023年5月16日
    00
  • django-创建Template(模板)

    1、什么是Templates   1)、HTML文件   2)、使用lDTL–Django模板语言(Django Template Language)   3)、可以使用第三方模板(如Jinja2)–在setting中TEMPLATES中修改   2、Templates开发步骤: 在App(项目)的根目录下创建名叫Templates的目录 在该目录下创建…

    Django 2023年4月13日
    00
  • Django Rest framework 框架

    一、开发模式:     1. 普通开发方式(前后端放在一起写)   2. 前后端分离(前后台通过ajaxo交互)     后端(django rest framework写的) <—-ajaxo—>  前端(vue写的) <—– >  用户     好处:   二、后端开发     为前端提供url(API的开发或者接口…

    Django 2023年4月13日
    00
合作推广
合作推广
分享本页
返回顶部