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

Django模板无法显示部分模型对象属性问题求助

问题排查与解决方案

一、详情页内容完全不显示的问题

原因

views.py的project_detail视图中,将单个Project对象存入context时使用了复数键名projects,但详情页模板(project_detail.html)里应该是用单数变量名(如project)来渲染内容(比如{{ project.title }}),导致模板无法匹配到对应数据。

修复代码

修改project_detail视图:

from django.shortcuts import render
from projects.models import Project

def project_detail(request, pk):
    project = Project.objects.get(pk=pk)  # 变量名改为单数更符合语义
    context = {
        'project': project  # 键名改为单数,与模板变量名对应
    }
    return render(request, 'project_detail.html', context)

二、图片无法加载的问题

1. 静态文件配置错误

settings.py中STATIC_URL设置错误,正确的静态文件基础URL应该指向根目录下的static文件夹,同时需要指定静态文件的存储目录:

# Static files (CSS, JavaScript, Images)
STATIC_URL = '/static/'
STATICFILES_DIRS = [
    BASE_DIR / "static",  # 指向项目根目录下的static文件夹
]

2. 模型中FilePathField路径错误

FilePathField(path="/img")使用了系统根目录的绝对路径,而你的图片实际存放在项目根目录的static/img下,修改模型字段:

from django.db import models
import os

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

class Project(models.Model):
    title = models.CharField(max_length=100)
    description = models.TextField()
    technology = models.CharField(max_length=20)
    image = models.FilePathField(path=os.path.join(BASE_DIR, "static", "img"))

3. 模板引用图片的方式错误

模板中必须使用Django的{% static %}标签加载静态图片,示例如下:

<!-- 先在模板顶部加载static标签 -->
{% load static %}

<!-- 列表页循环渲染图片 -->
{% for project in projects %}
    <div class="project-card">
        <h3>{{ project.title }}</h3>
        <p>{{ project.description }}</p>
        <!-- 引用图片 -->
        <img src="{% static project.image %}" alt="{{ project.title }}">
        <a href="{% url 'project_detail' project.pk %}">查看详情</a>
    </div>
{% endfor %}

额外验证步骤

  • 确认static/img目录下的图片文件名与你在shell中添加到Project对象的image字段值一致
  • 开发环境下无需手动执行collectstatic,Django会自动检索静态文件;生产环境需执行python manage.py collectstatic

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 20:40:46