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

Django中如何逐个渲染字典类型的技能字段数据?

Django技能字段(字典格式)逐个展示解决方案

问题分析

技能字段存储为字典(如{"Python": "熟练", "Django": "精通"}),模板直接输出会显示完整字典字符串,无法逐个展示技能条目。以下分两种场景给出解决方法:


场景1:技能字段为JSONField(Django 3.1+支持)

如果你的Profile模型使用JSONField存储技能字典,直接在模板中遍历字典的键值对即可。

模型示例(models.py)

from django.db import models
from django.contrib.auth.models import User

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    skills = models.JSONField(default=dict)  # 存储字典格式数据
    # 其他字段...

视图示例(views.py)

from django.shortcuts import render
from .models import Profile

def profile_view(request):
    profile = Profile.objects.get(user=request.user)
    return render(request, 'profile.html', {'profile': profile})

修改后的模板代码(profile.html)

要展示技能名称和对应熟练度:

<h3>我的技能</h3>
<ul>
  {% for skill_name, proficiency in profile.skills.items %}
    <li>{{ skill_name }}: {{ proficiency }}</li>
  {% empty %}
    <li>暂无技能信息</li>
  {% endfor %}
</ul>

如果只需展示技能名称,遍历字典的keys:

<h3>我的技能</h3>
<ul>
  {% for skill_name in profile.skills.keys %}
    <li>{{ skill_name }}</li>
  {% empty %}
    <li>暂无技能信息</li>
  {% endfor %}
</ul>

场景2:技能字段为TextField(存储JSON字符串)

如果技能是用普通文本字段存储的JSON字符串,需要先在模型中添加解析方法,再在模板中使用。

修改模型(models.py)

import json
from django.db import models
from django.contrib.auth.models import User

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    skills = models.TextField(default='{}')  # 存储JSON格式字符串

    @property
    def parsed_skills(self):
        # 解析JSON字符串为字典,处理解析失败的情况
        try:
            return json.loads(self.skills)
        except json.JSONDecodeError:
            return {}

模板代码(profile.html)

<h3>我的技能</h3>
<ul>
  {% for skill_name, proficiency in profile.parsed_skills.items %}
    <li>{{ skill_name }}: {{ proficiency }}</li>
  {% empty %}
    <li>暂无技能信息</li>
  {% endfor %}
</ul>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 06:57:09