You need to enable JavaScript to run this app. Django模板遍历嵌套字典无输出无法渲染,如何正确遍历?
优惠活动
大模型
产品
解决方案
定价
更多

Django模板遍历嵌套字典无输出无法渲染,如何正确遍历?

问题原因

渲染失败是三个问题共同导致的:

  1. 你当前绑定的路由默认走ProjectsView的get方法,这个方法的上下文context里只传了title,既没有包含项目数据,也没有调用general_projects_list方法提取数据。
  2. general_projects_list方法里传递上下文的写法错误,你写的{ general_projects_dict }是把字典对象塞进了集合里,Django模板无法识别对应的变量名,正确的上下文必须是键值对格式的字典。
  3. 模板的遍历逻辑有误,变量名匹配错误,同时取链接的层级也写错了。

修复步骤

第一步:修正视图逻辑

把项目数据整合到get方法的上下文中,修改后的视图代码如下:

from django.views import View
class ProjectsView(Mixin, View):
  def get(self, request, id = None, *args, **kwargs):
    template = "pages/projects.html"
    projects = {
      0:
        {
          "Name": "Suru++ Pastas",
          "Description": "适用于Unix、BSD系统的Bash可执行工具,用于修改Adwaita++、Suru++、Yaru++图标主题的文件夹配色",
          "Colaboration": "我复刻了这个项目并做了适配改造,让它可以兼容多款图标主题",
          "Link": "https://github.com/gusbemacbe/suru-plus-folders",
          "Tags": ["Makefile", "Shell"]
        },
      1:
        {
          "Name": "Icons Missing Request",
          "Description": "可执行工具,能读取当前使用的图标主题和Linux桌面文件,检测桌面文件对应的图标是否在主题中存在,自动生成缺失图标请求列表",
          "Colaboration": "我参与了项目贡献,将工具翻译成了多门外语,降低了不熟悉英语的用户的终端使用门槛",
          "Link": "https://github.com/gusbemacbe/icons-missing-script",
          "Tags": ["Shell", "Vala"]
        },
      2:
        {
          "Name": "Ooomox",
          "Description": "Linux系统配色生成应用,支持生成GTK2、GTK3、GTK4、终端等多场景的配色变体,还可以自定义图标主题的图标、文件夹配色",
          "Colaboration": "我参与了项目贡献,新增了Adwaita++、Suru++、Yaru++主题的扩展支持,同时将应用翻译成了西班牙语、法语、意大利语、荷兰语、葡萄牙语",
          "Link": "https://github.com/gusbemacbe/icons-missing-script",
          "Tags": ["Makefile", "Python", "Shell"]
        },
    }
    context = {
      'title': "项目",
      'projects': projects # 直接把项目字典传入上下文,键名projects就是模板里调用的变量名
    }
    return render(request, template, context)

如果你需要保留general_projects_list方法单独使用,也可以在get方法中调用它提取数据,直接整合逻辑相对更简洁。

第二步:修正模板遍历代码

直接遍历上下文传入的projects变量即可,修改后的模板代码:

{% for project_id, project_info in projects.items %}
  <h3>{{project_info.Name}}</h3>
  <p>{{project_info.Description}}</p>
  <p>{{project_info.Colaboration}}</p>
  <p><b>标签:</b>
  {% for tag in project_info.Tags %}
    <span>{{tag}}</span>
  {% endfor %}
  </p>
  <a href="{{project_info.Link}}" class="cyberpunk2077">访问</a>
{% endfor %}

内容的提问来源于stack exchange,提问作者Oo'-

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 20:15:06