项目功能分析:
这个项目可以让用户浏览商品、添加商品到购物车、进行结账等操作。这个项目涉及到数据库操作、用户认证、支付集成等方面的技术。
代码示例:
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 框架创建一个简单的在线购物商城应用程序,包括模型定义、视图函数编写、表单处理和数据库操作等方面的知识。