【问题标题】:Render JSON response using Django's render()使用 Django 的 render() 渲染 JSON 响应
【发布时间】:2018-03-06 05:04:20
【问题描述】:

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

models.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
...

views.py

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

version.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"}}

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

感谢任何帮助。

【问题讨论】:

    标签: python json django mediafire


    【解决方案1】:

    使用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)})
    

    【讨论】:

    • 我需要使用 render()。
    • 这个运气好吗?请。接受答案或提供您自己的答案
    【解决方案2】:

    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}
    

    【讨论】:

    • 输出:<HttpResponse status_code=200, "text/html; charset=utf-8">
    猜你喜欢
    • 2021-02-17
    • 1970-01-01
    • 2017-04-09
    • 1970-01-01
    • 2017-10-12
    • 2015-06-23
    • 1970-01-01
    • 2017-07-13
    • 1970-01-01
    相关资源
    最近更新 更多