如何在Django模板中解析数组变量?元素不显示问题排查
解决Django模板中数组元素无法显示的问题
问题原因
你在Django模板中访问列表元素的语法错误,导致数组内容无法渲染。Django模板里的点.语法用于访问对象属性或字典键,不能直接用来获取列表的索引元素。
解决方案
将模板中访问列表元素的方式从ytthumbnail.i、yttitle.i改为ytthumbnail[i]、yttitle[i]即可。
修正后的模板代码
{% 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="YouTube视频缩略图" sizes="100px" srcset="100px"> <h5>{{ yttitle[i] }}</h5> </div> {%endfor%} </div> {% endblock %}
额外优化建议
你的views.py存在潜在的变量未定义风险:当youtube != "youtubego"时,ytid、yttitle、ytthumbnail未初始化,会导致模板渲染报错。建议在函数开头初始化这些变量:
def check(request): data = [] # 初始化变量避免未定义报错 ytid, yttitle, ytthumbnail = [], [], [] 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)
内容的提问来源于stack exchange,提问作者Shaven Wickramanayaka
相关产品推荐
相关产品推荐

