【问题标题】:Break loop in django suddenly after if condition is true for first time如果条件第一次为真后突然在 django 中中断循环
【发布时间】:2015-04-15 15:20:35
【问题描述】:

我在 for 循环中遇到问题。我想在if条件第一次为真之后突然中断循环,即。我只想为一次“for循环”迭代打印一次hello但我知道django中没有break语句。所以请告诉我如何实现它。我认为它可以通过过滤器完成,但不知道如何。如果有的话,请告诉我使用过滤器或其他更好的方法来做到这一点的方法。

{% for p in subbranch_list %}
        {% if q.id == p.parentbranch_id  %}
                     <h1>Hello</h1>
            {{ break }}
        {% endif %}             
{% endfor %} 

实际上我想做的是在我的 project.html 页面中-

在上图中,有一个侧边栏包含项目的一些分支(IT,CS),它再次分类为子分支(IT1,IT2 TE),并且 IT 中有一个小的向下错误,我只需要显示至少有一个子分支存在于子分支表中。

我的 project.html 文件是-

<div id="wrapper" class="midDiv_project">

        <!-- Navigation -->
        <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
        </button>
            <div class="row" style="background-color:#AEAEAE;">
              <div class="col-md-3" style="background-color:hsl(0, 0%, 97%);min-height:580px;margin-lef:-100px;width:21%;border-right: 1px solid #e7e7e7;">
                  <div class="navbar-default sidebar" role="navigation" >
            <div class="sidebar-nav navbar-collapse">
                <ul class="nav" id="side-menu">
                    <li>
                        <a href="/mutech/aboutus/" class="slidebar_a"><i class="fa fa-dashboard fa-fw"></i> Dashboard</a>
                    </li>
                                      <!-- Sidebar -->

{% if branch_list %}
    {% for q in branch_list %}

            <li>
                <a href="#" class="slidebar_a"><i class="fa fa-table fa-fw"></i> {{ q.branch_title }}    
                    {# hello #}
{% for p in subbranch_list %}
        {% if q.id == p.parentbranch_id  %}
                     <span class="fa arrow"></span></a> 

            {{ break }}
        {% endif %}             
{% endfor %} 
                    {% for p1 in subbranch_list %}
                    <ul class="nav nav-second-level">
                        {% if q.id == p1.parentbranch_id  %}
                                <li><a href="#" class="slidebar_a">{{ p1.subbranch_title }}</a></li>
                        {% endif %} 
                    </ul>
                    {% endfor %}                

            </li>
    {% endfor %}  
{% endif %}     
                </ul>
            </div>
                <!-- /.sidebar-collapse -->
        </div>
        <!-- /.navbar-static-side -->

              </div>
                <div class="col-md-9" >
                    <div>

                        <div class="container" >
                        <div class="row">
                            <h2>Projects List</h2>

            {% if project_list %}
              {% for q in project_list %}
                <div class="col-md-3" style="border:1px solid blak;height:250px;margin:2%">
                    <a data-toggle="modal" href="#{{ q.project_title }}">
                    <img class="img-responsive img-hover" src="../../../media/{{q.project_image}}" alt="Error" style="height:70%; width:100%" /></a><br>
                    <center><p>{{ q.project_title }}</p></center><br>
                </div>
            {% endfor %}
            {% else %}
            <p>No Project Found</p>
          {% endif %} 

我的model.py文件是-

class branch(models.Model):
    branch_title = models.CharField(max_length=50)



class subbranch(models.Model):
    parentbranch = models.ForeignKey(branch)
    subbranch_title = models.CharField(max_length=50)



class project(models.Model):
    project_title = models.CharField(max_length=50)
    project_image = models.ImageField(upload_to="Images/Project")
    project_desc = models.TextField(max_length=5000)
    project_duration = models.CharField(max_length=50)
    project_branch = models.ForeignKey(branch)
    project_subbranch = models.ForeignKey(subbranch)

有一条线-

{% if q.id == p.parentbranch_id %}

我需要在 if 条件第一次为真之后,循环必须终止。

【问题讨论】:

  • IMO,您最好在视图或模板标签中执行此操作以保持模板代码简单。
  • 但是如何在 view.py 中使用过滤器来实现它。我的表名是 subbranch。
  • 到目前为止您尝试过什么?如果你展示了你正在尝试做什么、你已经尝试了什么以及你被困在哪里,你就更有可能得到问题的答案。 “你能帮我编码一下吗?”不是一个伟大的 S.O.问题。
  • 好的,请稍等,让我探讨一下我的问题。
  • 嘿@布兰登,我已将问题编辑为我的实际问题。

标签: django


【解决方案1】:

可能最好的做法是在您看来像brandon 建议的那样执行此操作。但是,如果您想在模板中执行此操作,here 是如何将 breakcontinue 实现为模板过滤器的示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 2021-09-30
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    • 2013-12-07
    相关资源
    最近更新 更多