写一个Django美妆商城详情页
时间: 2024-01-24 19:03:56 浏览: 84
好的,以下是一个简单的Django美妆商城详情页的示例代码:
1. 首先,在Django的models.py文件中定义一个Product模型,包含商品的名称、描述、价格、图片等属性:
```python
from django.db import models
class Product(models.Model):
name = models.CharField(max_length=100)
description = models.TextField()
price = models.DecimalField(max_digits=10, decimal_places=2)
image = models.ImageField(upload_to='products')
def __str__(self):
return self.name
```
2. 在Django的views.py文件中定义一个view来显示商品详情页,该view接收一个商品的ID作为参数,从数据库中获取对应的商品信息,并渲染模板:
```python
from django.shortcuts import render, get_object_or_404
from .models import Product
def product_detail(request, product_id):
product = get_object_or_404(Product, pk=product_id)
context = {'product': product}
return render(request, 'products/detail.html', context)
```
3. 在Django的templates文件夹中创建一个名为“products”的文件夹,用于存放与商品相关的模板。在该文件夹中创建一个名为“detail.html”的模板,用于显示商品详情页。以下是一个简单的模板示例:
```html
{% extends 'base.html' %}
{% block title %}{{ product.name }} - My Beauty Store{% endblock %}
{% block content %}
<div class="product-detail">
<h1>{{ product.name }}</h1>
<img src="{{ product.image.url }}" alt="{{ product.name }}">
<p>{{ product.description }}</p>
<p>Price: ${{ product.price }}</p>
<form action="{% url 'cart:add_to_cart' product.id %}" method="post">
{% csrf_token %}
<input type="submit" value="Add to Cart">
</form>
</div>
{% endblock %}
```
该模板显示商品的名称、图片、描述和价格,并提供一个“添加到购物车”的按钮。
4. 最后,在Django的urls.py文件中定义一个URL模式来匹配商品详情页的URL,并将其与之前定义的view关联起来:
```python
from django.urls import path
from . import views
app_name = 'products'
urlpatterns = [
path('<int:product_id>/', views.product_detail, name='product_detail'),
]
```
这个URL模式将匹配形如“/products/1/”这样的URL,其中“1”是商品的ID。当用户访问该URL时,Django将调用product_detail view来显示商品详情页。
阅读全文