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

Django详情页无法显示模型字段数据问题求助

Django详情页仅显示单个字段问题排查与修复

问题描述

用Python+Django开发数据库网站时,详情页(路径格式luokka_id/数字)仅能展示模型的nimi字段,vara、varaaja字段无内容显示,页面近乎空白且无任何报错。搜索功能正常,搜索结果和详情页都能看到nimi字段内容,但其余字段始终空白。

相关代码

models.py

class luokka(models.Model):
    nimi = models.CharField('Pääkäyttöluokka', max_length=100)
    vara = models.CharField('Varakäyttöluokka', max_length=100)
    varaaja = models.CharField('Varakäyttöluokka', max_length=100)
    def __str__(self):
        return self.nimi

详情页模板:näytä_luokka.html

{% extends 'tietokanta/base.html' %}

{% block content %}

<center>
    
{{luokkalistaus}}
{{luokka}}


{{ luokka.nimi }}
{{ luokka.vara }}
{{ luokka.varaaja }}


    
</center>

{% endblock %}

views.py

def näytä_luokka(request, luokka_id):
    luokkalistaus = luokka.objects.get(pk=luokka_id)
    return render(request, 'tietokanta/näytä_luokat.html', 
        {'luokkalistaus': luokkalistaus})

问题原因

  1. 模板变量名不匹配:视图传递给模板的上下文变量是luokkalistaus,但模板中却用luokka去访问字段(如{{ luokka.vara }}),变量名不一致导致无法读取对应字段数据。
  2. 模板文件名拼写错误:视图中指定的模板是näytä_luokat.html(末尾多了s),但实际模板文件名为näytä_luokka.html,可能导致加载错误模板或缓存问题。

修复方案

方案一:统一视图与模板的变量名

修改视图代码,将上下文变量名改为luokka,同时修正模板文件名:

def näytä_luokka(request, luokka_id):
    luokka_obj = luokka.objects.get(pk=luokka_id)
    return render(request, 'tietokanta/näytä_luokka.html', 
        {'luokka': luokka_obj})

方案二:修改模板中的变量调用

保持视图不变,修改模板里的字段调用为luokkalistaus:

{{ luokkalistaus.nimi }}
{{ luokkalistaus.vara }}
{{ luokkalistaus.varaaja }}

同时记得把视图里的模板文件名修正为näytä_luokka.html。

额外验证

确认数据库中对应luokka记录的vara和varaaja字段不为空,避免因数据本身为空导致显示空白。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 22:10:33