You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django模板报错:无法解析'carray[0]'中的'[0]',求解决方案

解决Django模板列表索引语法错误

错误原因分析

  1. Django模板语法限制:Django模板不支持Python风格的[0]列表索引写法,必须使用.来访问列表元素(如{{ list.0 }})。
  2. 变量名不匹配:视图函数传递给模板的变量名是carry,但模板里误用了carray,导致变量无法识别。
  3. HTML语法疏漏:部分按钮标签缺少class=属性,会导致样式失效。

修正后的代码

1. 模板代码修正

将索引写法改为Django模板支持的.格式,同时修正变量名和HTML属性:

<div class="container mt-5">
<div class="d-flex justify-content-start">
    <!-- زر \"نجحت\" -->
    <button type="submit" name="CHOOSE"  value="1" class="btn btn-success mr-2">{{ carry.0 }} نجحت</button>
    <!-- زر \"فشلت\" -->
    <button type="submit" name="CHOOSE" value="2" class="btn btn-danger mr-2">{{ carry.1 }} فشلت</button>
    <!-- زر \"تحتاج إلى مال\" --> 
    <button type="submit" name="CHOOSE" value="3" class="btn btn-warning mr-2">تحتاج إلى مال {{ carry.2 }}</button>
    <!-- زر \"تحتاج إلى أدوات\" -->
    <button type="submit" name="CHOOSE" value="4" class="btn btn-info mr-2">{{ carry.3 }} تحتاج إلى أدوات</button>
    <!-- زر \"مؤجل\" -->
    <button type="submit" name="CHOOSE" value="5" class="btn btn-secondary">{{ carry.4 }} مؤجل</button>
        <!-- زر \"اخر نجاح\" -->
        <button type="button" class="btn btn-success mr-2">اخر نجاح</button>
        <!-- زر \"اخر فشل\" -->
        <button type="button" class="btn btn-danger mr-2">اخر فشل</button>
</div>
</div>
</form>

2. 视图代码优化(可选)

规范变量命名并清理无用注释,提升代码可读性:

def check_url_exists(url_to_check):
    try:
        count_array = []
        # 验证URL是否存在
        Display.objects.get(url=url_to_check)
        for i in range(1, 6):
            # 统计对应评价类型的记录数
            count = Display_Data.objects.filter(url=url_to_check, choosenum=i).count()
            count_array.append(count)
        return count_array
    except Display.DoesNotExist:
        return [0, 0, 0, 0, 0]

def display_video(request, url):
    # 生成YouTube视频嵌入链接
    embed_url = f"https://www.youtube.com/embed/{url}"
    full_url = f"https://www.youtube.com/watch?v={url}"
    soup = BeautifulSoup(requests.get(full_url).content, "html.parser")
    title = soup.title.text
    
    count_array = check_url_exists(url)
    # 传递数据到模板
    return render(request, 'display/videoA.html', {
        'embed_url': embed_url,
        'title': title,
        'carry': count_array
    })

验证效果

修改完成后,模板将正确读取carry列表中的统计数据,各评价类型的计数会正常显示在对应按钮上,同时按钮样式也能正常加载。

内容的提问来源于stack exchange,提问作者mohamed sadik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 09:27:06