You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django模板列表图片未全显示:商品页面商品图片展示问题求助

Django商品网站:实现分类商品列表带图片展示

需求说明

  • 开发一个简单的商品Django网站,首页包含电子产品、玩具两个分类链接
  • 点击分类链接进入二级页面后,每个分类下展示3个商品,且每个商品要显示对应图片

现有代码

index.html

<!DOCTYPE html>
{% load static %}
<html>
    <head>
        <title></title>
        <link rel="stylesheet" href="{% static "productApp/css/index.css" %}">
    </head>
    <body>
        <h1>Welcome to our online shoping portal</h1>           
        <ul>
            <li><a href="/electronics">Electronics<img src="productApp/images/electronics.jpeg"/></a></li>
            <li><a href="/toys">Toys</a></li>
            <li><a href="/shoes">Shoes</a></li>
        </ul>   
    </body>
</html>

product.html

<!DOCTYPE html>
{% load static %}
<html>
    <head>      
        <title></title> 
        <link rel="stylesheet" href="{% static "productApp/css/product.css" %}">
    </head>
    <body>
        <h1>{{heading}}</h1>
        <ul>
        <!-- <img src="{% static "productApp/images/electronics.jpg"%}"/> -->
            <li>{{product1}}</li>
            <li>{{product2}}</li>
            <li>{{product3}}</li>
        </ul>
    </body>
</html>

实现方案

1. 调整视图函数,传递商品及图片数据

在views.py里,给分类视图传递包含商品名称和图片路径的列表:

from django.shortcuts import render

def electronics(request):
    # 构造电子产品数据,包含名称和对应图片路径
    products = [
        {"name": "智能手机", "image": "productApp/images/phone.jpg"},
        {"name": "笔记本电脑", "image": "productApp/images/laptop.jpg"},
        {"name": "无线耳机", "image": "productApp/images/headphones.jpg"},
    ]
    return render(request, 'productApp/product.html', {'heading': '电子产品', 'products': products})

def toys(request):
    # 构造玩具类商品数据
    products = [
        {"name": "积木套装", "image": "productApp/images/blocks.jpg"},
        {"name": "遥控汽车", "image": "productApp/images/car.jpg"},
        {"name": "毛绒玩偶", "image": "productApp/images/doll.jpg"},
    ]
    return render(request, 'productApp/product.html', {'heading': '玩具', 'products': products})

2. 修改product.html,循环渲染商品和图片

把原来的单个商品变量改成循环遍历列表,每个商品项同时展示图片和名称:

<!DOCTYPE html>
{% load static %}
<html>
    <head>      
        <title>{{heading}}</title> 
        <link rel="stylesheet" href="{% static "productApp/css/product.css" %}">
    </head>
    <body>
        <h1>{{heading}}</h1>
        <ul>
            {% for product in products %}
            <li>
                <!-- 加载商品对应图片 -->
                <img src="{% static product.image %}" alt="{{product.name}}" style="width: 100px; height: auto;">
                <!-- 显示商品名称 -->
                <span>{{product.name}}</span>
            </li>
            {% endfor %}
        </ul>
    </body>
</html>

3. 修正index.html的图片路径问题

首页里的图片要使用{% static %}标签确保路径正确:

<!DOCTYPE html>
{% load static %}
<html>
    <head>
        <title>在线商城首页</title>
        <link rel="stylesheet" href="{% static "productApp/css/index.css" %}">
    </head>
    <body>
        <h1>欢迎来到我们的在线商城</h1>           
        <ul>
            <li><a href="/electronics">电子产品 <img src="{% static "productApp/images/electronics.jpeg" %}"></a></li>
            <li><a href="/toys">玩具</a></li>
            <li><a href="/shoes">鞋子</a></li>
        </ul>   
    </body>
</html>

4. 确认路由配置

确保urls.py里配置了对应分类的路由:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
    path('electronics/', views.electronics, name='electronics'),
    path('toys/', views.toys, name='toys'),
]

内容的提问来源于stack exchange,提问作者Trishna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 01:22:09