首页 > 编程语言 >python项目练习——12.在线购物商城应用程序

python项目练习——12.在线购物商城应用程序

时间:2024-04-02 12:03:20浏览次数:32  
标签:product 12 订单 python request 应用程序 购物车 models order

项目功能分析:

这个项目可以让用户浏览商品、添加商品到购物车、进行结账等操作。这个项目涉及到数据库操作、用户认证、支付集成等方面的技术。

代码示例:

# models.py

from django.db import models
from django.contrib.auth.models import User

class Product(models.Model):
    name = models.CharField(max_length=200)  # 商品名称
    price = models.DecimalField(max_digits=10, decimal_places=2)  # 商品价格

class Order(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)  # 下单用户
    products = models.ManyToManyField(Product, through='OrderItem')  # 订单商品关联

class OrderItem(models.Model):
    product = models.ForeignKey(Product, on_delete=models.CASCADE)  # 商品
    order = models.ForeignKey(Order, on_delete=models.CASCADE)  # 订单
    quantity = models.PositiveIntegerField(default=1)  # 数量

# forms.py

from django import forms
from .models import Order

class OrderForm(forms.ModelForm):
    class Meta:
        model = Order
        fields = []  # 订单表单字段为空,订单由后台自动生成

# views.py

from django.shortcuts import render, redirect
from django.contrib.auth.decorators import login_required
from .models import Product, OrderItem
from .forms import OrderForm

@login_required
def product_list(request):
    products = Product.objects.all()  # 获取所有商品
    return render(request, 'shop/product_list.html', {'products': products})

@login_required
def add_to_cart(request, product_id):
    product = Product.objects.get(pk=product_id)  # 获取要添加到购物车的商品
    order, created = Order.objects.get_or_create(user=request.user)  # 获取用户的购物车订单,若不存在则创建
    order_item, created = OrderItem.objects.get_or_create(product=product, order=order)  # 创建或获取购物车订单商品项
    if not created:
        order_item.quantity += 1  # 商品已在购物车中,数量加一
        order_item.save()
    return redirect('product_list')  # 重定向到商品列表页面

@login_required
def view_cart(request):
    order = Order.objects.get(user=request.user)  # 获取用户的购物车订单
    order_items = order.orderitem_set.all()  # 获取购物车订单的商品项
    return render(request, 'shop/view_cart.html', {'order_items': order_items})

@login_required
def checkout(request):
    order = Order.objects.get(user=request.user)  # 获取用户的购物车订单
    if request.method == 'POST':
        order.delete()  # 完成订单结账,清空购物车
        return redirect('product_list')  # 重定向到商品列表页面
    return render(request, 'shop/checkout.html', {'order': order})
 

代码逻辑分析:

 Product 模型表示商品,包含商品名称和价格字段,Order 模型表示订单,关联了用户和商品,OrderItem 模型表示订单中的商品项。定义一个表单类 OrderForm 用于结账时生成订单。

在视图函数中,实现了以下功能:

  • product_list 函数用于显示所有商品列表页面。
  • add_to_cart 函数用于将商品添加到购物车。
  • view_cart 函数用于显示购物车页面,列出购物车中的商品。
  • checkout 函数用于完成订单结账,清空购物车。

通过这个项目,你可以学习如何使用 Django 框架创建一个简单的在线购物商城应用程序,包括模型定义、视图函数编写、表单处理和数据库操作等方面的知识。

标签:product,12,订单,python,request,应用程序,购物车,models,order
From: https://blog.csdn.net/weixin_66370632/article/details/137264920

相关文章

  • SGM61230同步降压转换器
    这份文件是SGMicroCorp的SGM61230同步降压转换器的产品数据手册。以下是文件的核心内容概要:概述:SGM61230是一款由SGMicroCorp生产的同步降压转换器,设计用于在宽输入电压范围内提供高电流输出。以下是对该产品的详细概述:1.**输入电压范围**:-设备能够在4.5V至......
  • C++ List 到 Python List 的转换
    当我们编写C++库的封装器通常涉及使用一种跨语言的接口技术,比如使用C接口或者使用特定的跨语言库,比如SWIG(SimplifiedWrapperandInterfaceGenerator)或者Pybind11。这里我将简要介绍如何使用Pybind11来封装一个C++库,以便在Python中使用。1、问题背景在编写C++库的......
  • Python pip pip3 源设置成国内源,阿里云源,清华大学源
     由于python自带的源下载速度非常慢,特别是安装一些库的时候,甚至有时会失败。因此,建议将下载源替换成国内的(本文以阿里云为例),下载速度会快很多。总共有两种方法代码替换手动替换 代码替换pipconfigsetglobal.index-urlhttps://mirrors.aliyun.com/pypi/simplep......
  • 【python】字典(Dictionary)与集合(Set)
    字典是一种键值对的数据结构,而集合是一种无序、元素不重复的数据结构。目录前言正文一、字典(dict)    1、字典的定义    注意:        2、字典的查询    2.1语法:字典名['键名']    2.2语法:字典名.get('键名')   ......
  • 担心就业?Python 的七大就业方向,总有一个适合你!
    1、python爬虫工程师平均薪资:15-25k(参考-招聘网)介绍:爬虫技术就是用Python收集和爬取互联网的信息,也是小伙伴们入坑Python的第一驱动力。爬虫技术之所以受宠是由于它能大大地提高我们的工作效率。学会Python爬虫后,即使不做程序员的工作也能加分不少。技能要求:前端......
  • 【python】txt文件读取
    1open()函数file=open('example.txt','r')print(file.read())file.close()(1)整体读入,可以直接read()(2)一定要记得关闭2with语句withopen('example.txt','r')asf:forlineinf:print(line.strip())(1)line.strip的意思是去......
  • 【机器学习】数据探索---python主要的探索函数
    在上一篇博客【机器学习】数据探索(DataExploration)—数据质量和数据特征分析中,我们深入探讨了数据预处理的重要性,并介绍了诸如插值、数据归一化和主成分分析等关键技术。这些方法有助于我们清理数据中的噪声、消除异常值,以及降低数据的维度,从而为后续的机器学习模型训练......
  • 【Python BUG】ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `CX
    报错ImportError:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:version`CXXABI_1.3.9‘notfound背景开发的一个python预测程序(算法分析+应用服务),在原本的linux服务器下配置了开发环境,打包后在另一台凝思服务器解压,发现报错。应该是linux系统之间存在差异,动态库缺失......
  • Python学习(二)
    目录1.字符串1.1修改字符串的大小写1.1.1title方法1.1.2upper()和lower()方法1.2连接字符串1.3转义字符1.3.1制表符\t和换行符\n......
  • Python自动化测试工具-selenium
    官网https://www.selenium.dev/测试环境搭建python3+selenium+chromeselenium安装:pipinstallseleniumchromedriver下载对应版本,放置在python安装目录下:http://chromedriver.storage.googleapis.com/index.html#coding=utf8fromseleniumimportwebdriverbr=......