如何将数组变量解析为Django模板

gorkyyrv  于 2023-08-08  发布在  Go
关注(0)|答案(1)|浏览(84)

因此,我有一个views.py,其中包含以下代码,适用于该问题。

def check(request):
    data = []
    if request.method == 'POST':
        prompt = request.POST['pathway']
        youtube = request.POST.get('youtube')
        udemy = request.POST.get('udemy')
    # Uses the user's prompt to generate the roadmap
    data = scrapeSite(prompt)
    looprange = range(len(data))
    if youtube == "youtubego":
        ytid, yttitle,ytthumbnail = searchyt(prompt, data)
    context = {
        'ytid': ytid,
        'yttitle': yttitle,
        'loopnum': looprange,
        'ytthumbnail': ytthumbnail,
    }
    return render(request, 'generate.html', context)

字符串
基本上,它可以获取可变数量的YouTube视频的缩略图、标题和id。它们都存储在不同的数组中。其中的每一个都被分配给上下文字典中的一个值,然后该值被发送到如下所示的模板generate.html

{% extends 'main.html'%}

{% block title %}CourseCounduit || A University In Your Pocket{% endblock title%}
{% block content %}
<h1>Your roadmap for</h1>
<div id="Course-container">
    {%for i in loopnum %}
    <div>
        <img src="{{ytthumbnail.i}}" alt="" sizes="100px"
            srcset="100px">
        <h5>{{yttitle.i}}</h5>
    </div>
    {%endfor%}
</div>
{% endblock %}


因此,我所期望的主要结果是,div“Course Container”被复制到views.py中指定的loopnum的量,并且对于每次迭代,IMG标签将显示数组Ytthumbnail的第i个URL,并且对于H5标签显示YtTitle数组中的第i个标题。
目前正在创建div,但内容未显示。我已经确认阵列正在填充。
我希望divs复制到loopnum和在每个divs的缩略图和标题显示。先谢了。

g9icjywg

g9icjywg1#

尝试在视图中使用zip(ytthumbnail, yttitle)并使用index进行迭代。
比如
在视图中:

def check(request):
    ...
    combined_data= zip(ytthumbnail, yttitle)
    context = {
        ...
        'combined_data': combined_data,
    }
    return render(request, 'generate.html', context)

字符串
在.html文件中

{% for item in combined_data%}
<div>
    <img src="{{ item.0 }}" alt="" sizes="100px"
        srcset="100px">
    <h5>{{ item.1 }}</h5>
</div>
{% endfor %}


要使用{{ yttitle|index:forloop.counter0 }}语法,您需要注册一个自定义的 index 过滤器,以方便数组的索引,如here所示

相关问题