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})
问题原因
- 模板变量名不匹配:视图传递给模板的上下文变量是
luokkalistaus,但模板中却用luokka去访问字段(如{{ luokka.vara }}),变量名不一致导致无法读取对应字段数据。 - 模板文件名拼写错误:视图中指定的模板是
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
相关产品推荐
相关产品推荐

