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

Django模板中Pregunta的textopregunta字段无法渲染问题求助

问题排查与解决方案

嘿,我来帮你搞定这个数据渲染的问题!咱们一步步来分析:

1. 模板循环变量匹配错误(最直接原因)

你在模板里写了{% for test in lista %},但循环体内却用了{{ pregunta.textopregunta }}——这里的循环变量是test,不是pregunta啊!模板找不到pregunta这个变量,自然只会显示“Pregunta:”,后面的内容是空的。

修正后的模板代码:

{% for test in lista %}
<br/>
<p>Pregunta: {{ test.textopregunta }}</p>
{% endfor %}

2. 视图类使用错误

你用了DetailView,但这个视图类是用来展示单个模型对象详情的,而你想要渲染的是Pregunta的列表数据。DetailView会把单个对象传递给模板(即使你设置了context_object_name='lista'),这就导致模板里的循环其实是在遍历单个对象的属性,根本不是你想要的列表集合。

应该换成ListView,它专门用来处理列表数据展示:

修正后的View.py代码:

class TestDetail(generic.ListView):
    model = Pregunta
    context_object_name = 'lista'
    
    def get_queryset(self):
        # 获取URL中的tipo参数
        tipo = self.kwargs.get('tipo')
        # 根据tipo过滤关联的Test(这里假设Test模型有一个叫tipo的字段,记得根据你的实际模型调整)
        return Pregunta.objects.filter(test__tipo=tipo)

3. 补充:URL参数的过滤逻辑

你的URL里有(?P<tipo>.+)参数,但原来的get_queryset只是返回所有Pregunta,没有根据这个参数过滤数据。上面的修正代码里加上了过滤逻辑,这样就能只返回对应类型的Test下的Pregunta数据,符合你的URL设计意图。如果你的Test模型里类型字段不是tipo,记得改成实际的字段名(比如name、category等)。

这样调整之后,应该就能正常渲染出Pregunta的textopregunta内容啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:54:33