有没有办法以从 django 视图中作为上下文传递的一种很好的方式在 html 中显示 json 结果?
Posted
技术标签:
【中文标题】有没有办法以从 django 视图中作为上下文传递的一种很好的方式在 html 中显示 json 结果?【英文标题】:Is there a way to display json results in html in a nice way passed as a context from django view? 【发布时间】:2021-02-26 04:31:31 【问题描述】:我有我的 django 视图,它返回一个 json 并将其作为上下文传递给我的 html 模板,但不幸的是,我找不到一个好的方法循环遍历 html 模板(使用 Bootstrap 4 cdn)中的所有结果用他们的缩略图格式化。这是我的看法
from __future__ import unicode_literals
from django.shortcuts import render
from django.http import HttpResponse
from django.template import loader
from youtubesearchpython import SearchVideos
import urllib.parse
import json
def index(request):
if request.method == 'POST':
query = request.POST['video_name']
search = SearchVideos(str(query), offset = 1, mode = "json", max_results = 10)
ytresults = search.result()
result_dict = json.loads(ytresults)
context =
"result" : result_dict,
template_name = "youloader/results.html"
return render(request, template_name, context)
else:
template_name = "youloader/index.html"
return render(request, template_name)
在我的模板中,我尝试仅传递上下文键,以便确保结果按预期返回。这是我的模板示例
% extends 'youloader/base.html' %
% block content %
<div style="padding-top: 20px">
result
</div>
% endblock %
我已经添加了示例输出
【问题讨论】:
【参考方案1】:当您将 dict
传递给模板时,可以使用以下方式访问结果
result.search_result
然后,您可以逐一遍历模板中的结果以访问缩略图 URL。
# youloader/results.html
% for video in result.search_result %
<img src=" video.thumbnails.0 ">
% endfor %
从图片中我可以看到video.thumbnails
是一个列表,您可以选择 0 到 4 的索引来选择图片的大小。
【讨论】:
我尝试了您的解决方案,但不幸的是它不起作用,而是返回错误 TemplateSyntaxError at / Could not parse the rest: '["search_result"]' from 'result["search_result"]' 抱歉@JAXPAROW95,我使用了错误的语法。我现在已经更新了答案。以上是关于有没有办法以从 django 视图中作为上下文传递的一种很好的方式在 html 中显示 json 结果?的主要内容,如果未能解决你的问题,请参考以下文章