Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(Django python)使用多个“for循环”进行渲染_Python_Html_Django - Fatal编程技术网

(Django python)使用多个“for循环”进行渲染

(Django python)使用多个“for循环”进行渲染,python,html,django,Python,Html,Django,嘿,伙计们,我正在使用Django python制作教育英语测试系统。 系统显示一篇文章和几个关于该文章的非固定问题。 每个问题都有可选择的项目,这些项目的编号不是固定的。 例如 {----第条---} {-----问题------} {-----项目----------------} {-----项目----------------} {-----项目----------------} {-----问题------} {-----项目----------------} {-----项目----

嘿,伙计们,我正在使用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_
    }
<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>
我为模板编写了index.html,如下所示:

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_
    }
<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>
当然,它不起作用。。。 在这种情况下,我如何使它工作? 如果你有任何想法,请帮助我。。。这个问题困扰了我一个星期

编辑:

结果显示此错误页


首先,您可以看看您的语法。您在函数调用中重复出现错误,例如:

{%for article in article%} instead of {% for article in article %}
{%for question_image in question_images %} instead of  {% for  
{%endfor%} instead of {% endfor %}
请更正它们,然后重试。这可能有用。
对于这种情况,您可以在官方django文档中查看正确的标记格式。

如果需要根据第一篇文章的选择更改选择器的其余内容,则需要在模板中使用Ajax从DB返回呈现的上下文。@ZarakiKenpachi感谢您的回复,如果我使用Ajax,我可以在我的页面中显示多个“for for循环”?你可以根据所选的文章来改变问题部分中显示的上下文。@ ZarakiKenpachi Ah understood,谢谢。如果我需要的话,我应该考虑使用。that@bdemirka我解决了这个问题,请参考这个主题谢谢!我已经离开座位了。。。我明天再查,我会告诉你结果的!非常感谢。这不是语法错误,您可以同时使用它way@bedemirka. 如果你说的是对的,对我来说是新的。我只是查看了django的官方文档。你会发现我的建议是正确的语法,根据我的经验,每当我按照你的建议格式化标记时,我都会弄糟。谢谢,但修复后会显示相同的错误。