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

Django模板接收JSON数据为空,如何获取属性名对应值?

嘿,这个问题我之前帮人解决过,大概率是Django模板语法的小坑导致的!我给你两种靠谱的解决方案,再帮你排查下常见问题:

先确认你的Views代码是否正确

首先要保证你在views.py里已经把JSON字符串解析成了Python字典,而不是直接传递原始的JSON字符串——模板没法直接解析JSON文本哦。举个正确的例子:

import json
from django.shortcuts import render

def your_view(request):
    # 假设你从接口/文件拿到JSON字符串
    raw_json = '{"username": "rohillasarthak", "email": "test@example.com", "role": "dev"}'
    # 解析为Python字典
    parsed_data = json.loads(raw_json)
    # 你的属性名列表
    attr_names = ["username", "email", "role"]
    # 传递到模板
    return render(request, "your_template.html", {"data": parsed_data, "attrs": attr_names})
解决方案1:自定义模板过滤器(推荐)

Django模板默认不支持{{ data[attr] }}这种动态取字典键的写法,所以我们可以写个简单的过滤器来实现:

  1. 在你的Django app里创建templatetags文件夹(记得加__init__.py空文件),然后新建custom_filters.py:
from django import template

register = template.Library()

@register.filter(name="get_value")
def get_value_from_dict(dictionary, key):
    # 用get方法避免键不存在时报错,返回空字符串兜底
    return dictionary.get(key, "")
  1. 在模板顶部加载这个过滤器:
{% load custom_filters %}
  1. 循环属性列表取值:
{% for attr in attrs %}
    <p>*{{ attr }}*: {{ data|get_value:attr }}</p>
{% endfor %}
解决方案2:在Views里提前组装好键值对

如果不想写过滤器,也可以在views里直接把属性名和对应值打包好再传给模板:

def your_view(request):
    raw_json = '{"username": "rohillasarthak", "email": "test@example.com", "role": "dev"}'
    parsed_data = json.loads(raw_json)
    attr_names = ["username", "email", "role"]
    # 组装成(属性名, 属性值)的列表
    attr_value_pairs = [(attr, parsed_data.get(attr, "")) for attr in attr_names]
    return render(request, "your_template.html", {"pairs": attr_value_pairs})

然后模板里直接循环:

{% for attr, value in pairs %}
    <p>*{{ attr }}*: {{ value }}</p>
{% endfor %}
常见坑点排查
  • 检查parsed_data是不是真的字典:可以在模板里临时加{{ data }}打印出来,如果显示的是类似{'username': 'xxx'}的格式就是对的,如果是一串带引号的文本,说明你没解析JSON。
  • 核对属性名的大小写和拼写:JSON的键是区分大小写的!比如JSON里是"Username",你列表里写"username"肯定取不到值。
  • 嵌套属性的处理:如果你的JSON有嵌套(比如{"user": {"name": "xxx"}}),那属性列表里的"user.name"需要额外处理——可以在过滤器里拆分点号,或者在views里提前取出嵌套值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:08:38