我正在通过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
,<{1}}和current_api_version
在HTML模板中。
感谢任何帮助。
答案 0 :(得分:1)
使用自Django 1.7以来可用的JsonResponse
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)})
答案 1 :(得分: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}