下面是使用Django搭建网站实现商品分页功能的完整攻略。
前置知识
在实现商品分页功能之前,需要了解以下知识:
- Django框架基本概念和使用方法
- Django中模型(Model)的概念和使用方法
- Django中视图(View)的概念和使用方法
- Django中模板(Template)的概念和使用方法
- HTML和CSS的基础知识
实现步骤
- 创建Django项目和应用
在终端中输入以下命令创建Django项目和应用:
django-admin startproject mysite
python manage.py startapp products
- 定义商品模型
在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
- 编写视图函数
在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})
- 编写模板
在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">« 第一页</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 }}">最后一页 »</a>
{% endif %}
</span>
</div>
{% endblock %}
- 配置URL
在products应用中的urls.py文件中配置URL路由。在这里,我们可以将product_list视图函数和/products/路径关联起来。
示例代码:
from django.urls import path
from . import views
urlpatterns = [
path('', views.product_list, name='product_list'),
]
- 运行项目
在终端中输入以下命令运行项目:
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技术站