Django图书商城系统实战开发-实现商品分类管理

Django图书商城系统实战开发-实现商品分类管理

目前项目已经实现了登录注册、商品详情查看、购物车购买、个人订单管理、评价功能,个人中心管理,管理员登录,会员管理,请设计商品分类管理的相关页面以及视图函数,首先你要知道,商品分类有一级分类以及二级分类,请设计相关页面,视图函数,模型类等

1. 设计相关页面

在实现商品分类管理功能之前,我们需要设计相关的页面来展示和管理商品分类。以下是涉及到的页面:

1.1 商品分类列表页面 (category_list.html)

这个页面将展示所有的商品分类,并提供添加、编辑和删除分类的功能。

<!-- category_list.html -->
{% extends "base.html" %}

{% block content %}
  <h1>商品分类列表</h1>

  <!-- 商品分类列表 -->
  <table>
    <thead>
      <tr>
        <th>分类名称</th>
        <th>父级分类</th>
        <th>操作</th>
      </tr>
    </thead>
    <tbody>
      {% for category in categories %}
        <tr>
          <td>{{ category.name }}</td>
          <td>{{ category.parent }}</td>
          <td>
            <a href="{% url 'category_edit' category.id %}">编辑</a>
            <a href="{% url 'category_delete' category.id %}">删除</a>
          </td>
        </tr>
      {% endfor %}
    </tbody>
  </table>

  <!-- 添加分类按钮 -->
  <a href="{% url 'category_add' %}">添加分类</a>
{% endblock %}
1.2 添加商品分类页面 (category_add.html)

这个页面将提供一个表单,用于添加新的商品分类。表单包含分类名称、父级分类(如果是二级分类)等字段。

<!-- category_add.html -->
{% extends "base.html" %}

{% block content %}
  <h1>添加商品分类</h1>

  <form method="POST" action="{% url 'category_add' %}">
    {% csrf_token %}
    <label for="name">名称:</label>
    <input type="text" id="name" name="name" required>
  
    <label for="parent">父级分类:</label>
    <select id="parent" name="parent">
      <option value=""></option>
      {% for category in categories %}
        <option value="{{ category.id }}">{{ category.name }}</option>
      {% endfor %}
    </select>
  
    <button type="submit">添加</button>
  </form>

  <!-- 错误消息提示框 -->
  {% if message %}
    <div class="message">{{ message }}</div>
  {% endif %}
{% endblock %}
1.3 编辑商品分类页面 (category_edit.html)

这个页面将提供一个表单,用于编辑现有的商品分类。表单包含分类名称、父级分类(如果是二级分类)等字段。

<!-- category_edit.html -->
{% extends "base.html" %}

{% block content %}
  <h1>编辑商品分类</h1>

  <form method="POST" action="{% url 'category_edit' category.id %}">
    {% csrf_token %}
    <label for="name">名称:</label>
    <input type="text" id="name" name="name" value="{{ category.name }}" required>
  
    <label for="parent">父级分类:</label>
    <select id="parent" name="parent">
      <option value=""></option>
      {% for category in categories %}
        <option value="{{ category.id }}" {% if category.id == category.parent %}selected{% endif %}>{{ category.name }}</option>
      {% endfor %}
    </select>
  
    <button type="submit">保存</button>
  </form>

  <!-- 错误消息提示框 -->
  {% if message %}
    <div class="message">{{ message }}</div>
  {% endif %}
{% endblock %}

2. 设计模型类

在项目的models.py文件中设计商品分类相关的模型类。

# models.py

from django.db import models

class Category(models.Model):
    name = models.CharField(max_length=100, unique=True)
    parent = models.ForeignKey(
        'self',
        blank=True,
        null=True,
        related_name='children',
        on_delete=models.CASCADE
    )

    def __str__(self):
        return self.name

3. 设计视图函数和URL映射

下面是需要实现的视图函数和URL映射,以处理商品分类管理的业务逻辑。

3.1 商品分类列表视图函数 (views.py)

这个视图函数用于展示商品分类列表页面,并处理添加

Django图书商城系统实战开发-实现商品分类管理

1. 设计页面

商品分类列表页面
  • 在管理后台创建一个页面,让管理员可以查看和管理商品分类。
  • 页面展示一级分类和二级分类的列表。
  • 提供按钮,可以跳转到添加分类和编辑分类页面。
  • 提供按钮,可以删除分类。
添加分类页面
  • 创建一个页面,让管理员可以添加新的商品分类。
  • 页面包含一个表单,用于输入分类名称和选择所属的一级分类(如果是二级分类)。
  • 提供提交表单的按钮。
编辑分类页面
  • 创建一个页面,让管理员可以编辑已经存在的商品分类。
  • 页面包含一个表单,用于修改分类信息。
  • 提供提交表单的按钮。

2. 设计模型类

Category模型
from django.db import models

class Category(models.Model):
    name = models.CharField(max_length=100, unique=True)
    parent_category = models.ForeignKey('self', on_delete=models.CASCADE, null=True, blank=True)
    
    def __str__(self):
        return self.name

3. 设计视图函数和URL映射

创建URL映射

urls.py文件中添加以下URL映射关系:

from django.urls import path
from . import views

urlpatterns = [
    # 其他页面的URL映射
    
    # 商品分类管理页面
    path('category/list/', views.CategoryListView.as_view(), name='category_list'),
    path('category/add/', views.CategoryCreateView.as_view(), name='category_add'),
    path('category/edit/<int:pk>/', views.CategoryUpdateView.as_view(), name='category_edit'),
    path('category/delete/<int:pk>/', views.CategoryDeleteView.as_view(), name='category_delete'),
]
创建视图函数
from django.shortcuts import render, redirect
from django.views.generic import ListView, CreateView, UpdateView, DeleteView
from django.urls import reverse_lazy
from django.contrib import messages

from .models import Category

# 商品分类列表视图
class CategoryListView(ListView):
    model = Category
    template_name = 'category_list.html'
    context_object_name = 'categories'
    
# 添加分类视图
class CategoryCreateView(CreateView):
    model = Category
    template_name = 'category_add.html'
    fields = ['name', 'parent_category']
    success_url = reverse_lazy('category_list')
    
# 编辑分类视图
class CategoryUpdateView(UpdateView):
    model = Category
    template_name = 'category_edit.html'
    fields = ['name', 'parent_category']
    success_url = reverse_lazy('category_list')
    
# 删除分类视图
class CategoryDeleteView(DeleteView):
    model = Category
    template_name = 'category_delete.html'
    success_url = reverse_lazy('category_list')

    def delete(self, request, *args, **kwargs):
        messages.success(request, '分类删除成功')
        return super().delete(request, *args, **kwargs)

总结

在设计视图函数和URL映射时,可以按照以下步骤进行:

  1. 导入必要的模块和类,以便在视图函数中使用。
  2. 定义视图函数,处理请求并返回响应。在视图函数中,可以进行一些数据操作、调用其他函数或模块,并准备响应数据。
  3. 在视图函数中,将响应数据传递给模板进行渲染,并返回渲染后的页面。
  4. urls.py文件中,配置URL映射,将请求的URL路径与对应的视图函数进行绑定。使用path函数指定路径和相应的视图函数。
  5. 可以为URL添加参数,以便在视图函数中获取请求的特定信息。
  6. 可以为URL映射指定名称,以便在模板或其他地方引用该URL时使用。
  7. 根据实际需求,可以设计更多的视图函数和URL映射,以构建完整的应用程序。

总结起来,设计视图函数和URL映射是构建Web应用程序的关键步骤。通过清晰地设计视图函数和合理配置URL映射,可以实现各种业务逻辑和页面跳转,并提供所需的功能和用户体验。在设计过程中,要考虑代码的可读性、可维护性和性能优化,以保证应用程序的质量和效率。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
本课程是一个系列的django实战进阶开发教程,目标是带领大家快速上手实战,课程以最新版本django3.2为蓝本,深入django源码本身,通过内置的类视图来开发,即CBV模式开发,从最基础的类显示视图到类编辑视图再到混入视图,由浅入深,专注Django的高级知识,带你系统的玩转Django,无过多的依赖第三方库,进一步降低学习门槛,更加专注django框架本身!本课程将带你实现一个功能完备的商城系统,如:新闻管理商品管理(包含多规格)、订单管理、购物车、快速下单、评论、地址、运费模板等常见的商城功能!除此之外,你还可以将本课程内容中涉及到的django类视图的高级用法作为参考资料,在以后的开发中用到的时候再翻阅。认真看完这个系列视频教程之后,您会深入理解django框架的高级知识以及开发流程,具备使用django上手开发实际项目的基本能力!本课程亮点一、少量的第三方依赖,降低学习门槛开发过程中依赖第三方库少,减少大家的进一步的学习理解成本,从而更加专注django框架本身!二、前端轻度结合vue.js,无需过多前端技能本项目将轻度结合vue.js以及fetch来完成一些异步请求,无需过多vue 知识,更贴合后端开发者,也更加靠近当下最热门的技术栈,为前后端分离项目开发打下坚实的基础!三、采用django本身序列化方法构造json,深入django框架本身深度使用Django本身的序列化器来序列化数据,构造一些异步操作的接口,通过这一深度使用对未来使用drf框架将打下坚实的基础,学习drf框架将变的非常容易。四、CBV模式开发,深入Django类视图本项目全部采用Django的类视图,深入学习类视图,不同的请求我们可以在类中使用不同的方法来处理,这样大大的提高了代码的可读性以及高度扩展性,更加便于二次开发!五、多规格产品功能,更符合实际需求网上千篇一律的教程都没有深入讲解多规格商品实现思路,本专栏将手把手带你完成多规格功能,并且对JD及TB的两种多规格模式的利弊进行深入剖析!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

竹山全栈

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

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

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

打赏作者

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

抵扣说明:

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

余额充值