2017-12-01 1 views
0

Ich versuche, JSON-Daten im Format des Schlüsselwertpaares zu drucken, so dass ich sie in meiner HTML-Vorlage rendern kann.Drucken von JSON-Daten im Format des Schlüsselwertpaares in Django

als eine Antwort, ich bekomme nur eine Liste der Schlüssel in den "Feldern". like: customfield_10070customfield_10071customfield_10072customfield_10073customfield_13221customfield_10074customfield_13220customfield_10075. Ich brauche ein Schlüssel-Wert-Paar im Dict-Format.

+0

Was die Werte sein würde? – geckos

Antwort

-2
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) 
+1

Bitte erläutern Sie in Ihrem Beitrag, wie es funktioniert und warum es eine Lösung ist. – Pureferret

+0

Hallo Aman. Ich habe versucht, es zeigt das gleiche an. Ich möchte tatsächlich über "Felder" iterieren, die wiederum ein Schlüssel/Wert-Paar wie {summary: xxx, desc: xxx} haben und sie als json-Objekt zurückgeben. –

+0

wird es schon ein dict. –

-1

Prior Django 1.7

Verwendung

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") 

Von Django 1.7 Onwards

from django.http import JsonResponse 

#rest of the views 
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 JsonResponse(response_data) 
1

HttpResponse, wenn ein iterable vergangen, wird über sie iterieren die Antwortinhalt zu bauen . A dict ist iterierbar, und das Iterieren über es iteriert tatsächlich über die Schlüssel des Dikts. Von Ihrer Problembeschreibung nehme ich an, dass jsonDict['fields'] ein dict ist.

Wenn Sie dieses dict als json (dh rufen Sie die Ansicht mit AJAX) zurückgeben möchten, müssen Sie es zurück zu JSON zurückgeben und eine richtige "JSON" -Antwort zurückgeben. Sie können es manuell tun (zurück zum json Dumping und den richtigen Content-Type-Einstellung), oder verwenden Sie die eingebaute 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") 

Nun, wenn, was Sie wollen, ist dies in einer Django-Vorlage zu machen geben sie, nur um Kontext der Vorlage des:

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 
return render(request, "path/to/your/template.html", {"data":jsonDict["fields"]}) 

und in der Vorlage:

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

vielen dank! das ist genau das, was ich wollte! –

Verwandte Themen