Web实战丨基于django+html+css的在线购物商城

这篇具有很好参考价值的文章主要介绍了Web实战丨基于django+html+css的在线购物商城。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

写在前面

本期内容:基于Django+HTML+CSS+的在线购物商城

实验环境:

  • vscode或pycharm
  • python(3.11.4)
  • django
  • celery
  • dj-static

代码下载地址:https://download.csdn.net/download/m0_68111267/88718630

实验目标

使用Django+HTML+CSS开发一个在线购物商城系统,该在线购物商城分为四大部分:购物界面、购物车、订单界面以及后台。可以在后台实现商品的添加、修改与删除操作,在购物界面实时展示后台添加的商品,当加入购物车后,可以查看购物车里的内容,最后付款时跳到结算订单界面。

实验内容

安装依赖库

在正式开始之前,我们需要先安装本次实战项目所依赖的库:

  • django:一个高级的Python Web框架。
  • celery:一个分布式任务队列框架。
  • dj-static:一个用于在Django应用程序中提供静态文件的库。

安装命令:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple django
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple celery
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple dj-static

1.创建项目

1.我们先使用以下命令创建一个django项目:

django-admin startproject myshop

2.然后我们使用以下命令创建三个主要的项目app(购物界面、购物车界面、订单结算界面)

django-admin startapp cart
django-admin startapp shop
django-admin startapp orders

3.整个项目的结构如下

Web实战丨基于django+html+css的在线购物商城,《 Python实战项目100例 》,《 Web大作业 》,django,html,python

注意你的myshop此时应该没有"media"这个文件夹(这个文件夹后面会出现滴)

2.系统设置

1.打开myshop中的myshop文件夹,然后打开settings.py配置系统设置

Web实战丨基于django+html+css的在线购物商城,《 Python实战项目100例 》,《 Web大作业 》,django,html,python

修改以下几处地方

Web实战丨基于django+html+css的在线购物商城,《 Python实战项目100例 》,《 Web大作业 》,django,html,python

添加以下内容

Web实战丨基于django+html+css的在线购物商城,《 Python实战项目100例 》,《 Web大作业 》,django,html,python

2.打开/myshop/myshop/urls.py文件,添加以下内容

Web实战丨基于django+html+css的在线购物商城,《 Python实战项目100例 》,《 Web大作业 》,django,html,python

Web实战丨基于django+html+css的在线购物商城,《 Python实战项目100例 》,《 Web大作业 》,django,html,python

3.新建celery.py文件,添加以下内容

Web实战丨基于django+html+css的在线购物商城,《 Python实战项目100例 》,《 Web大作业 》,django,html,python

import os
from celery import Celery
from django.conf import settings

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myshop.settings')

app = Celery('myshop')

app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

这段代码的作用是创建一个Celery应用程序(app)并配置它。

具体来说,它做了以下几件事情:

  1. 设置默认的Django settings模块为myshop.settings。这使得Celery应用程序能够访问Django项目的配置信息。

  2. 创建一个名为app的Celery实例,参数为myshop。这个实例将用于定义和管理任务。

  3. 使用app.config_from_object方法将Django项目的配置应用到app实例中。这意味着app实例会使用项目中的配置信息,如Broker URL、任务序列化方式等。

  4. 使用app.autodiscover_tasks方法自动发现INSTALLED_APPS中的任务模块。这使得app实例能够找到并加载在Django项目中定义的任务。

3.购物界面

  1. 整个购物界面的框架如下:

Web实战丨基于django+html+css的在线购物商城,《 Python实战项目100例 》,《 Web大作业 》,django,html,python

  • static:存放了静态资源,包括css渲染文件以及img图片文件。
  • templates:存放django项目中的html模版文件的目录。
  • shop:shop中的product存放购物界面,base.html是购物界面的基本界面。
  • _ _init_ _.py:Python包的标识和初始化文件,用于控制包的导入和初始化行为。
  • admin.py:用于定义和配置django的后台管理界面。
  • models.py:用于定义和配置数据库模型。
  • test.py:用于编写和运行单元测试。(咱们用不到)
  • urls.py:用于配置路由。
  • views.py:用于定义视图函数或类视图。
  1. 双击打开admin.py,填入以下内容
from django.contrib import admin
from .models import Category, Product

class CategoryAdmin(admin.ModelAdmin):
    list_display = ['name', 'slug']
    prepopulated_fields = {'slug': ('name',)}
admin.site.register(Category, CategoryAdmin)


class ProductAdmin(admin.ModelAdmin):
    list_display = ['name', 'slug', 'category', 'price', 'stock', 'available', 'created', 'updated']
    list_filter = ['available', 'created', 'updated', 'category']
    list_editable = ['price', 'stock', 'available']
    prepopulated_fields = {'slug': ('name',)}
admin.site.register(Product, ProductAdmin)

这段代码是用于在Django的管理界面中注册两个模型类Category和Product,以便可以在后台管理界面中对它们进行管理。

首先,代码从django.contrib模块中导入了admin模块,该模块包含了Django管理界面的相关功能。

然后,定义了一个继承自admin.ModelAdminCategoryAdmin类,该类用于定义Category模型在管理界面中的展示和操作方式。list_display属性指定了在列表中显示的字段,prepopulated_fields属性用于自动填充slug字段。

接着,在admin.site.register函数中将Category模型和CategoryAdmin类进行注册,以便在管理页面中显示和管理Category模型的数据。

接下来,定义了一个继承自admin.ModelAdminProductAdmin类,该类用于定义Product模型在管理界面中的展示和操作方式。list_display属性指定了在列表中显示的字段,list_filter属性用于添加过滤器,list_editable属性指定可以直接在列表中编辑的字段,prepopulated_fields属性用于自动填充slug字段。

最后,通过admin.site.register函数将Product模型和ProductAdmin类进行注册,以便在管理页面中显示和管理Product模型的数据。

通过以上代码,Category和Product模型的数据将在Django管理界面中以指定的方式进行展示和管理。

  1. 打开 models.py文件,填入以下内容
from django.db import models
from django.urls import reverse


class Category(models.Model):
    name = models.CharField(max_length=200, db_index=True)
    slug = models.SlugField(max_length=200, db_index=True, unique=True)

    class Meta:
        ordering = ('name',)
        verbose_name = 'category'
        verbose_name_plural = 'categories'

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return reverse('shop:product_list_by_category', args=[self.slug])


class Product(models.Model):
    category = models.ForeignKey(Category, related_name='products', on_delete=models.CASCADE)
    name = models.CharField(max_length=200, db_index=True)
    slug = models.SlugField(max_length=200, db_index=True)
    image = models.ImageField(upload_to='products/%Y/%m/%d', blank=True)
    description = models.TextField(blank=True)
    price = models.DecimalField(max_digits=10, decimal_places=2)
    stock = models.PositiveIntegerField()
    available = models.BooleanField(default=True)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)

    class Meta:
        ordering = ('-created',)
        index_together = (('id', 'slug'),)

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return reverse('shop:product_detail', args=[self.id, self.slug])

这段代码定义了两个模型类:Category和Product。

Category模型类定义了商品类别的属性和行为,包括name(类别名)和slug(类别的URL标识符)。它还定义了Meta类,用于指定模型对象在数据库中的排序方式和在管理界面中的显示方式。__str__方法用于返回对象的字符串表示,get_absolute_url方法用于生成该对象在网站中的URL。

Product模型类定义了商品的属性和行为,包括category(商品所属的类别,使用外键关联到Category模型),name(商品名),slug(商品的URL标识符),image(商品图片),description(商品描述),price(商品价格),stock(商品库存数量),available(商品是否可用),created(商品创建时间),updated(商品更新时间)。它也定义了Meta类,用于指定模型对象在数据库中的排序方式和在管理界面中的显示方式。__str__方法用于返回对象的字符串表示,get_absolute_url方法用于生成该对象在网站中的URL。

这两个模型类之间通过外键关联建立了关系,一个Category可以有多个Product,而一个Product只能属于一个Category。通过related_name属性,可以通过Category对象反向查询到与之关联的Product对象。

此外,这两个模型类都定义了Meta类用于指定模型的排序方式和其他元数据。

通过以上代码,实现了Category和Product模型的定义,用于存储和管理商品的类别和具体信息。

  1. 打开urls.py文件,填入以下内容
from django.urls import path
from . import views

urlpatterns = [
    path('', views.product_list, name='product_list'),
    path('<str:category_slug>/', views.product_list, name='product_list_by_category'),
    path('<int:id>/<str:slug>/', views.product_detail, name='product_detail'),
]
app_name = 'myshop'

这段代码定义了URL路由规则,将URL路径映射到对应的视图函数。

第一行导入了path函数和views模块。

接下来,urlpatterns是一个列表,其中包含了多个URL路径和对应的视图函数的映射关系。

第一个URL路径是空字符串,对应的视图函数是product_list,并命名为’product_list’。这意味着当用户访问网站的根路径时,会调用product_list视图函数处理请求。

第二个URL路径包含一个动态参数category_slug,对应的视图函数也是product_list,并同样命名为’product_list_by_category’。这意味着当用户访问类似于"/category_slug/"的URL路径时,会调用product_list视图函数处理请求,并将category_slug作为参数传递给该函数。

第三个URL路径包含两个动态参数id和slug,对应的视图函数是product_detail,并命名为’product_detail’。这意味着当用户访问类似于"/id/slug/"的URL路径时,会调用product_detail视图函数处理请求,并将id和slug作为参数传递给该函数。

最后一行是为该应用程序指定命名空间,命名为’myshop’。这可以在其他地方使用该命名空间来引用该应用程序的URL。

  1. 打开views.py文件,填入以下内容
from django.shortcuts import render, get_object_or_404
from .models import Category, Product
from cart.forms import CartAddProductForm


def product_list(request, category_slug=None):
    category = None
    categories = Category.objects.all()
    products = Product.objects.filter(available=True)
    if category_slug:
        category = get_object_or_404(Category, slug=category_slug)
        products = products.filter(category=category)
    return render(request, 'shop/product/list.html', {'category': category,
                                                      'categories': categories,
                                                      'products': products})


def product_detail(request, id, slug):
    product = get_object_or_404(Product, id=id, slug=slug, available=True)
    cart_product_form = CartAddProductForm()
    return render(request,
                  'shop/product/detail.html',
                  {'product': product,
                   'cart_product_form': cart_product_form
                   })

这段代码定义了用于处理产品列表和产品详情的视图函数。

第一个视图函数product_list接收一个可选参数category_slug,并根据该参数过滤产品列表。首先,它会获取所有的分类对象,并将其存储在categories变量中。接下来,它会获取所有available为True的产品,并将其存储在products变量中。如果category_slug参数不为空,它会通过调用get_object_or_404函数根据slug获取对应的分类对象,并将其存储在category变量中。然后,它会将products按照分类过滤,并传递给模板渲染。最后,它会使用render函数将模板’templates/shop/product/list.html’渲染成HTML响应,传递给客户端。

第二个视图函数product_detail接收两个参数id和slug,并根据这两个参数获取对应的产品对象。如果找不到对应的产品对象,会返回404错误页面。然后,它会创建一个CartAddProductForm对象,并将产品对象和表单对象传递给模板渲染。最后,它会使用render函数将模板’templates/shop/product/detail.html’渲染成HTML响应,传递给客户端。

  1. 打开base.html文件,填入以下内容
{% load static %}
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>{% block title %}My shop 我的商店{% endblock %}</title>
    <link href="{% static "css/base.css" %}" rel="stylesheet">
</head>
<body>
    <div id="header">
        <a href="/" class="logo">My shop 我的商店</a>
    </div>
    <div id="subheader">
        <div class="cart">
            {% with total_items=cart|length %}
                {% if cart|length > 0 %}
                    Your cart: 
                    <a href="{% url "cart:cart_detail" %}">
                        {{ total_items }} item{{ total_items|pluralize }}, ${{ cart.get_total_price }}
                    </a>
                {% else %}
                    Your cart is empty.
                {% endif %}
            {% endwith %}
        </div>
    </div>
    <div id="content">
        {% block content %}
        {% endblock %}
    </div>
</body>
</html>

这段代码是一个基本的模板,用于渲染整个网页的结构。下面对其中的部分代码进行解析:

  • {% load static %}:加载静态文件标签,用于引入静态文件。

  • <link href="{% static "css/base.css" %}" rel="stylesheet">:引入名为"css/base.css"的静态文件,用于样式渲染。

  • <title>{% block title %}My shop 我的商店{% endblock %}</title>:定义页面标题。这里使用了模板继承的特性,block标签用于定义一个可被子模板继承和覆盖的区域。

  • <a href="/" class="logo">My shop 我的商店</a>:设置网站的logo链接,点击后返回首页。

  • <div class="cart">...</div>:展示购物车信息。此处使用了模板变量和模板标签进行条件判断,根据购物车中的商品数量和总价格来显示不同的内容。

  • <div id="content">{% block content %}{% endblock %}</div>:定义页面内容区域,使用模板继承的特性,子模板可以在其中定义自己的内容。

这段代码是一个基础模板,子模板可以通过继承此模板并在{% block content %}{% endblock %}区域填充内容来渲染他们自己的页面。

  1. 还有details.html和list.html,由于代码太多,博主就不放出来了,需要代码的小伙伴可以下载后查看哦~

4.购物车界面

项目结构如下:

Web实战丨基于django+html+css的在线购物商城,《 Python实战项目100例 》,《 Web大作业 》,django,html,python

5.订单界面

项目结构如下:

Web实战丨基于django+html+css的在线购物商城,《 Python实战项目100例 》,《 Web大作业 》,django,html,python

6.运行项目

1.购物界面

Web实战丨基于django+html+css的在线购物商城,《 Python实战项目100例 》,《 Web大作业 》,django,html,python
Web实战丨基于django+html+css的在线购物商城,《 Python实战项目100例 》,《 Web大作业 》,django,html,python

2.购物车界面

Web实战丨基于django+html+css的在线购物商城,《 Python实战项目100例 》,《 Web大作业 》,django,html,python

3.结算界面

Web实战丨基于django+html+css的在线购物商城,《 Python实战项目100例 》,《 Web大作业 》,django,html,python
Web实战丨基于django+html+css的在线购物商城,《 Python实战项目100例 》,《 Web大作业 》,django,html,python

4.后台界面

Web实战丨基于django+html+css的在线购物商城,《 Python实战项目100例 》,《 Web大作业 》,django,html,python

写在后面

我是一只有趣的兔子,感谢你的喜欢!文章来源地址https://www.toymoban.com/news/detail-781825.html

到了这里,关于Web实战丨基于django+html+css的在线购物商城的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于jsp+jdbc+mysql+html+css网上电脑购物商城系统设计与实现(Django框架) 研究背景与意义、国内外研究现状

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩。 项目配有对应开发文档、

    2024年02月19日
    浏览(52)
  • 基于jsp+jdbc+mysql+html+css网上体育用品购物商城系统设计与实现(Django框架) 研究背景与意义、国内外研究现状

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩。 项目配有对应开发文档、

    2024年02月19日
    浏览(60)
  • 基于Django在线鲜花水果购物商城系统设计与实现(Pycharm+Python+Mysql)

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩。 项目配有对应开发文档、

    2024年03月18日
    浏览(80)
  • 【网页设计】基于HTML在线图书商城购物项目设计与实现

    🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (1000套) 】 🧡 程序员有趣的告白方式:【💌HTML七夕情人节表白网页制作 (

    2024年02月04日
    浏览(48)
  • 大一Web课程设计:企业网站——HTML+CSS+JavaScript电子购物商城(37页面)

    常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他等网页设计题目

    2024年02月03日
    浏览(62)
  • 基于python网上电脑在线电脑购物商城系统设计与实现(django框架)研究背景和意义、国内外现状

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、

    2024年01月25日
    浏览(54)
  • 基于JSP+Mysql+HTml+Css鲜花水果购物商城系统设计与实现

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩。 项目配有对应开发文档、

    2024年04月12日
    浏览(64)
  • 【python实战项目】基于python+django的网上购物商城系统的设计与实现

    精彩专栏推荐订阅:在 下方专栏👇🏻👇🏻👇🏻👇🏻 💖🔥 作者主页 :计算机毕设木哥🔥 💖 本项目是一个基于Python和Django框架开发的网上购物商城系统。它提供了一个在线购物平台,用户可以在该平台上浏览商品、下单购买、支付并管理他们的订单。管理员可以管理

    2024年01月16日
    浏览(67)
  • Web实战丨基于django+html+css+js的学院门户网站

    本期内容:基于Django+Html+Css+JavaScript的学院门户网站 项目需求: python django 项目下载地址:https://download.csdn.net/download/m0_68111267/88726654 Web系统与技术课程旨在培养学生对Web系统的设计、开发和管理能力。课程内容包括Web系统的基本概念、体系结构和工作原理,以及常用的Web开

    2024年02月02日
    浏览(68)
  • Web实战丨基于django+html+css+js的电子商务网站

    本期内容:基于Django+HTML+CSS+JS的电子商务网站 实验环境: vscode或pycharm python(3.11.4) django 代码下载地址:https://download.csdn.net/download/m0_68111267/88725954 使用Django+HTML+CSS+JS开发一个含登陆界面的电子商务网站。本项目共分为六大模块: 用户信息界面 商品信息界面 购物车界面 送货

    2024年01月25日
    浏览(84)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包