(Django python)使用多个“for循环”进行渲染[重复]
Posted
技术标签:
【中文标题】(Django python)使用多个“for循环”进行渲染[重复]【英文标题】:(Django python) Using multiple 'for loop' for render [duplicate] 【发布时间】:2020-12-26 21:09:09 【问题描述】:大家好,我正在使用 Django python 制作英语教育测试系统。 系统显示一篇文章和几个(未修复)关于文章的问题。 并且每个问题都有可选项目,其中数字不固定。 例如 ---------- 文章 -------------- ---------- 问题 -------------- ---------- 项目 ------------------ ---------- 项目 ------------------ ---------- 项目 ------------------ ---------- 问题 -------------- ---------- 项目 ------------------ ---------- 项目 ------------------ ---------- 项目 ------------------
所以我这样定义模型:
# Question DB
class Article(models.Model):
a_name = models.TextField(unique=True)
a_con = models.TextField() #Article Contents
class Question(models.Model):
q_name = models.TextField(unique=True)
q_a = models.ForeignKey(Article,on_delete=models.CASCADE)
q_con = models.TextField() #Question Contents
q_ans = models.TextField() #Question Correct Answer
class Item(models.Model):
i_q = models.ForeignKey(Question,on_delete=models.CASCADE)
i_seq = models.PositiveIntegerField() #Item Sequence
i_con = models.TextField() #Item Contents
# Image DB
class ArticleImage(models.Model):
ai_name = models.TextField(unique=True)
ai_a = models.ForeignKey(Article,on_delete=models.CASCADE)
ai_src = models.TextField()
class QuestionImage(models.Model):
qi_name = models.TextField(unique=True)
qi_q = models.ForeignKey(Question,on_delete=models.CASCADE)
qi_src = models.TextField()
class ItemImage(models.Model):
ii_name = models.TextField(unique=True)
ii_i = models.ForeignKey(Item,on_delete=models.CASCADE)
ii_src = models.TextField()
我这样写 view.py:
def findQuestionbyArticle(article_name):
_ARTICLE_ = Article.objects.filter(a_name = article_name)
for a in _ARTICLE_:
_ARTICLE_IMAGE_ = ArticleImage.objects.filter(ai_a = a)
_QUESTION_ = Question.objects.filter(q_a = a)
_ITEM_ =
_ITEM_IMAGE_ =
for q in _QUESTION_:
_QUESTION_IMAGE_ = QuestionImage.objects.filter(qi_q = q)
_ITEM_[q] = Item.objects.filter(i_q = q)
for i in _ITEM_[q]:
_ITEM_IMAGE_[i] = ItemImage.objects.filter(ii_i = i)
return
'article' : _ARTICLE_,
'article_image' : _ARTICLE_IMAGE_ ,
'question' : _QUESTION_,
'question_image' : _QUESTION_IMAGE_,
'item' : _ITEM_,
'item_image' : _ITEM_IMAGE_
我为这样的模板编写了 index.html:
<div class = "content-a">
<div class = "article">
%for article in articles%
<span>article.a_con</span>
%for article_image in article_images%
<img src = article_image.src>
%endfor%
%endfor%
</div>
%for question in questions %
<div class = "question">
<span>question.q_con</span>
%for question_image in question_images %
<img src = question_image.src>
%endfor%
%for item in items[question] %
<div class = "item">
<span>item.i_con</span>
%for item_image in item_images%
<img src = item_image[item].src>
%endfor%
</div>
%endfor%
</div>
%endfor%
</div>
当然,它不起作用...... 在这种情况下,我怎样才能让它工作? 如果您有任何想法,请帮助我...这个问题困扰了我一周...
编辑:
结果显示此错误页面。
【问题讨论】:
如果您需要根据第一篇文章选择更改其余选择器内容,那么您需要在模板中使用 Ajax 从数据库返回呈现的上下文。 @ZarakiKenpachi 感谢您的回复,您的意思是如果我使用 Ajax 我可以在我的页面中显示多个“for 循环”吗? 您可以根据所选文章更改问题部分中显示的上下文。 @ZarakiKenpachi 嗯明白了,谢谢如果我需要我应该考虑使用那个 @bdemirka 我解决了这个问题,请参阅这个主题谢谢! ***.com/questions/8000022/… 【参考方案1】:首先,您可以看看您的语法。您在函数调用中犯了一个重复的错误,例如:
%for article in article% instead of % for article in article %
%for question_image in question_images % instead of % for
%endfor% instead of % endfor %
更正它们并重试。它可能会起作用。
对于这种情况,您可以在官方django
documentation中查看正确的标签格式。
【讨论】:
我已经离开座位了……我明天去看看,我会告诉你结果!谢谢! 这不是语法错误,你可以同时使用它 @bedemirka。如果你说的对我来说是新的。我只是查看官方 django 文档docs.djangoproject.com/en/3.1/topics/templates/…。您会看到我提出的是正确的语法,根据我的经验,每当我按照您的建议格式化标签时,我都会搞砸。 谢谢,但修复后显示同样的错误。以上是关于(Django python)使用多个“for循环”进行渲染[重复]的主要内容,如果未能解决你的问题,请参考以下文章
在 Django 模板中使用 for 循环显示多个 chart.js 图表
在Django模板中使用for循环显示多个chart.js图表
使用 For 循环的 Django Python 模板嵌套列表
无法在 Django 模板文件的 for 循环中使用条件标签