在djang中以键值对格式打印json数据

2024-09-27 00:18:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试以键值对的格式打印json数据,以便在html模板中呈现它们。在

def ecpd(request):
    r= requests.get('http://jira.xxx.xxx.com/rest/api/2/issue/key-XXX',auth=HTTPBasicAuth('user','pass'),headers = {'Content-Type' : 'application/json'})
    jsonDict = json.loads(r.content)
return HttpResponse(jsonDict['fields'])

作为回应,我只得到“字段”中的键列表。 例如:customfield_10070customfield_10071 customfield_10072 customfield_10073 customfield_13221customfield_10074 customfield_13220customfield_10075。 我需要dict格式的键值对。


Tags: 数据模板jsonhttpgetrequestdefhtml
3条回答

HttpResponse如果传递了一个iterable,它将遍历它来构建响应内容。dict是可编辑的,迭代它实际上就是迭代dict的键。根据您的问题描述,我假设jsonDict['fields']确实是dict。在

如果您想将这个dict作为json返回(即用ajax调用视图),那么您必须将其转储回json并返回一个正确的“json”响应。您可以手动执行(转储回json并设置正确的内容类型),或者使用内置的JsonResponse(Django>;=1.7)

r = requests.get('http://jira.xxx.xxx.com/rest/api/2/issue/key-XXX',auth=HTTPBasicAuth('user','pass'),headers = {'Content-Type' : 'application/json'})
jsonDict = r.json() # requests shortcut
# Django >= 1.7
return JsonResponse(jsonDict["fields"])
# Django < 1.7
data = json.dumps(jsonDict["fields"])
return HttpResponse(data, content_type="application/json")

现在,如果您想要在Django模板中呈现它,只需将其传递到模板的上下文:

^{pr2}$

在模板中:

<dl>
{% for k, v in data %}:
  <dt>{{ k }}</dt>
  <dd>{{ v }}</dd>
{% endfor %}
</dl>

以前的Django 1.7

使用

def ecpd(request):
    r = requests.get('http://jira.xxx.xxx.com/rest/api/2/issue/key-XXX',auth=HTTPBasicAuth('user','pass'),headers = {'Content-Type' : 'application/json'})
    response_data = r.content
    return HttpResponse(json.dumps(response_data), content_type="application/json")

从Django 1.7起

^{pr2}$
def ecpd(request):
     r= requests.get('http://jira.xxx.xxx.com/rest/api/2/issue/key-XXX',auth=HTTPBasicAuth('user','pass'),headers = {'Content-Type' : 'application/json'})
    if r.status_code == 200:
         jsonDict = r.json()
         return HttpResponse(jsonDict)

相关问题 更多 >

    热门问题