django.template.exceptions.TemplateSyntaxError: Invalid block tag on line 109: ‘break’, expected ‘elif’, ‘else’ or ‘endif’. Did you forget to register or load this tag?

2024年6月25日

Djangoのテンプレートエンジンでは、{% break %}といったbreak文をサポートしていません。代わりに、条件文を利用してコードを書く必要があります。

上記の例では、5番目以降のパラメータをアコーディオンで表示するために、forループを使用しています。ただし、そのままではbreak文が使えません。その代わりに、条件分岐を使ってループを途中で終了させています。

以下は、修正されたテンプレートの例です:

html
<form method="post" action="" enctype="multipart/form-data">
    {% csrf_token %}
    
    <div class="row">
        {% for parameter in parameters %}
            <div class="col-md-4">
                <div class="mb-3">
                    <label for="{{ parameter }}" class="form-label">{{ parameter }}</label>
                    <input type="text" class="form-control" id="{{ parameter }}" name="{{ parameter }}" value="{{ request.POST.parameter }}">
                </div>
            </div>
            
            {% if forloop.counter0 >= 4 %}
                {# Additional parameters go here #}
                <div class="col-md-4">
                    <!-- Additional parameter input field -->
                </div>
            {% endif %}
        {% endfor %}
    </div>
    
    <button type="submit" class="btn btn-primary">アップロード</button>
</form>

この例では、5番目以降のパラメータに対しても同様のフォーム要素が表示されるようにしています。必要に応じて、アコーディオン内に表示する具体的なフォーム要素の内容を追加してください。

未分類

Posted by ぼっち