2017-12-01 8 views
0

私はhtmlテンプレートでそれらをレンダリングできるように、キー値のペアの形式でjsonデータを印刷しようとしています。djangoでキー値のペアの形式でjsonデータを印刷する

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_10071customfield_10072customfield_10073customfield_13221customfield_10074customfield_13220customfield_10075 私はdict形式でキーと値のペアが必要です。

+0

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

とテンプレートで:、ちょうどあなたのテンプレートのコンテキストにそれを渡しますか? – geckos

答えて

-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

あなたの投稿には、それがどのように動作するのか、なぜそれが解決策であるのか、いくつかの説明を記入してください。 – Pureferret

+0

こんにちは、Aman。私は同じことを表示しようとしました。私は実際には、{summary:xxx、desc:xxx}のようなキーと値のペアを持ち、jsonオブジェクトとして返す "fields"を反復処理したいと考えています。 –

+0

それはすでにdictになります。 –

-1

ジャンゴ1.7以降

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からの事前の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") 

に、反復可能に合格した場合は、応答内容を構築し、それを反復します。 A dictは反復可能であり、その反復処理は実際にはdictのキーを反復処理しています。問題の説明から、私はjsonDict['fields']が実際にdictであると仮定します。

この辞書をjson(つまり、ajaxでビューを呼び出す)に戻したい場合は、それをjsonにダンプし、適切な "json"応答を返す必要があります。あなたはそれが手動で(JSONに戻って投棄し、適切なコンテンツタイプを設定すること)を行う、または使用することができ、組み込みJsonResponse(ジャンゴ> = 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テンプレートでこれをレンダリングする場合値がどうなるか

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

ありがとう!それはまさに私が欲しかったことです! –

関連する問題