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

Django项目中部分HTML文件模板标签失效问题求助

作品集网站模板标签渲染问题排查与修复

问题场景

做学校项目的作品集网站时,project.html页面的模板标签能正常显示项目标题、详情及图片,但home.html和about.html中的模板标签完全无法渲染数据。尝试过修改标签名称、合并拆分模型类,问题依然存在。

问题根源

  1. 变量大小写不匹配:home.html中使用{{ H_info.xxx }}调用变量,但views.py的home视图传入的上下文变量是H_Info(大写I),Django模板变量严格区分大小写,导致无法匹配。
  2. QuerySet与单个对象混淆:project视图用.get()返回单个模型对象,模板可直接调用字段;但home和about视图用.all().values()返回的是数据集合(QuerySet),模板以单个对象的方式调用字段时,集合没有对应属性,因此无法渲染。

修复步骤

1. 修复首页(home)视图与模板匹配

修改views.py中的home函数,改用.first()获取单个对象,并统一变量名与模板一致:

def home(request):
    H_info = Home_Info.objects.first()  # 获取数据库中第一条(唯一)个人首页信息
    template = loader.get_template('home.html')
    context = {
        'H_info': H_info,
    }
    return HttpResponse(template.render(context, request))

home.html无需修改,变量名已匹配,且H_info现在是单个对象,可直接调用字段。

2. 修复关于页(about)视图的集合问题

About_Info应为单条个人信息,用.first()获取单个对象;Contact_Links是多条链接,用.all()获取对象集合即可:

def about(request):
    Abt_Info = About_Info.objects.first()  # 获取单条个人关于信息
    Cont_Info = Contact_Links.objects.all()  # 获取所有联系方式链接对象
    template = loader.get_template('about.html')
    context ={
        'Abt_Info':Abt_Info,
        'Cont_Info':Cont_Info,
    }
    return HttpResponse(template.render(context,request))

about.html的遍历部分无需修改,.all()返回的对象集合可直接通过{{ x.site_link }}调用字段。

3. 确认数据库存在数据

登录Django后台,检查Home_Info、About_Info是否已创建对应记录,Contact_Links是否添加了链接数据。无数据时,模板仍会显示空内容。

验证修复

重启Django开发服务器,访问首页和关于页面,模板标签即可正常渲染数据库中的数据。

内容的提问来源于stack exchange,提问作者Gen Bernard Bayeta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 04:37:44