2

我正在学习 Django 的教程,但未能使用 Django 的 render() 函数显示 API 响应。

模型.py

...
class MF_Version():
    def get_MF_Version(self):
        url = 'https://www.mediafire.com/api/1.5/system/get_version.php?response_format=json'
        r = requests.get(url)
        return r
...

视图.py

...
def view_Version(request):
    hr = HttpResponse(MF_Version().get_MF_Version())
    return render(request, 'mediafire/version.html', {'hr': hr})
    # return hr
...

版本.html

{% if 1 %}
    {{ hr }}
{% endif %}

浏览器输出:

<HttpResponse status_code=200, "text/html; charset=utf-8">

MefiaFire 回应:

{"response":{"action":"system\/get_version","current_api_version":"1.5","result":"Success"}}

如果我return render(...)在 view.py 文件中注释掉并将其替换为return hr,我确实会看到来自 MediaFire 的 JSON 响应,但我无法弄清楚如何在 HTML 模板中访问 和actioncurrent_api_versionresult

任何帮助表示赞赏。

4

2 回答 2

4

Use JsonResponse,从 Django 1.7 开始可用

from django.http import JsonResponse

def view_Version(request):
    return JsonResponse(MF_Version().get_MF_Version())

你根本不需要渲染。

如果您需要渲染,请按如下方式编写(未经测试):

{% for x in hr %}
    {{ x }}: {{ hr.x }}
{% endfor %}

你的python代码看起来像:

import json
from django.http import JsonResponse

def view_Version(request):
    hr = JsonResponse(MF_Version().get_MF_Version())
    return render(request, 'mediafire/version.html', {'hr': json.loads(hr)})
于 2017-03-29T01:56:50.167 回答
0

MF_Version().get_MF_Version()得到一个json,

你可以试试这个:

def view_Version(request):
    hr = MF_Version().get_MF_Version().json()
    return render(request, 'mediafire/version.html', {'hr': hr}
于 2017-03-29T01:48:40.650 回答