LoginSignup
qiitataro
@qiitataro

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

jinja2.exceptions.TemplateSyntaxErrorが解決できません。

flaskでページネーションの実装をおこなっていましたが、
どうしても、下記のエラーが解決できません。

user_maintenance.html内のfor文やif文のブロックに問題があるようですが、
{% endfor %}や{% endif %}はじっかりとfor文、if文に対応できていると思っております。
エラー文の
閉じる必要がある最も内側のブロックは「for」です。
という箇所も、しっかりと、for文は、閉じております。

この様なエラーで、他に確認すべきこと、解決策をご教示いただければと思います。

jinja2.exceptions.TemplateSyntaxError: 不明なタグ 'endblock' が見つかりました。あなたはおそらく入れ子の間違いを犯しました。Jinja はこのタグを期待していますが、現在 'endfor' または 'else' を探しています。閉じる必要がある最も内側のブロックは「for」です。
app.py


@app.route('/user_maintenance')
def user_maintenance():

    page = request.args.get('page', 1, type=int)
    users = User.query.order_by(User.id).paginate(page=page, per_page=10)
    return render_template('user_maintenance.html', users=users)
user_maintenance.html
<!-- 抜粋 -->

    <nav class="my-2" aria-label="Page navigation">
        <ul class="pagination justify-content-center">
          <li {% if users.has_prev %}class="page-item"{% else %} class="page-item disabled"{% endif %}><a class="page-link" href="{% if users.has_prev %}{{ url_for('user_maintenance', page=users.prev_num) }}{% else %}#{% endif %}">前へ</a></li>

    
          {% for page_num in users.iter_pages(left_edge=1, right_edge=1, left_current=1, right_current=2) %}  
            {% if page_num %}
                {% if users.page == page_num %}
                    <li class="page-item disabled"><a class="page-link" href="#">{{ page_num }}</a></li>
                {% else %}
                    <li class="page-item"><a class="page-link" href="{{ url_for('user_maintenance', page=page_num) }}">{{ page_num }}</a></li>
                {% endif %}
            {% else %}
                <li class="page-item disabled"><a class="page-link" href="#">&hellip;</a></li>
            {% endif %}
          {% endfor %}

          <li {% if users.has_next %}class="page-item"{% else %} class="page-item disabled"{% endif %}><a class="page-link" href="{% if users.has_next %}{{ url_for('user_maintenance', page=users.next_num) }}{% else %}#{% endif %}">次へ</a></li>
        </ul>
      </nav>  

user_maintenance.html
<!-- 全コード -->
{% extends "base.html" %}
{% block content %}

    <header id="page-header">
        <div class="container my-3 py-3 bg-light">
            <div class="row">
                <div class="col-md-6 m-auto text-center">
                    <h1>ユーザー管理</h1>
                </div>
            </div>
        </div>
    </header>
    <section id="menu">
        <div class="container my-3 py-3 bg-light">
            <div class="row">
                <div class="col-md-3">
                    <a href="{{url_for('register')}}" class="btn btn-primary w-100">
                        ユーザー登録
                    </a>
                </div>
            </div>
        </div>
    </section>

    <section id="list">
        <div class="container my-3">
            <div class="row">
                <div class="col-md-9">
                    <div class="card">
                        <div class="card-header">
                            <h4>最新のユーザー</h4>
                        </div>
                        <table class="table table-striped">
                            <thead class="table-dark">
                                <tr>
                                    <th>ID</th>
                                    <th>ユーザー名</th>
                                    <th>メールアドレス</th>
                                    <th>管理者</th>
                                    <th>ブログ投稿数</th>
                                    <th>変更</th>
                                </tr>
                            </thead>
                            <tbody>
                                <!-- # 100 -->
                                <!-- {% for user in users %} -->
                                <!-- 103 ページネーション 現在ページの取得 -->
                                {% for user in users.items %}
                                <tr>
                                    <!-- 本来は、DBから取得し全てのユーザー一覧を表示させる -->
                                    <!-- def register():でセッションに保存したデーターを受け取る -->
                                    <!-- <td>ID</td> -->
                                    <td>{{ user.id }}</td>
                                    <!-- <td>ユーザー名</td> -->
                                    <!-- <td>{{session['username']}}</td> -->
                                    <td>{{ user.username }}</td>
                                    <!-- <td>メールアドレス</td> -->
                                    <!-- <td>{{session['email']}}</td> -->
                                    <td>{{ user.email }}</td>
                                    <!-- <td>管理者</td> -->
                                    <td>{{ user.administrator }}</td>
                                    <td><a href="#">ブログ投稿数</a></td>
                                    <td><a href="#" class="btn btn-secondary">
                                        変更
                                    </a></td>
                                </tr>
                                {% endfor %}
                            </tbody>
                        </table>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <!-- 104 ページネーション -->
    <nav class="my-2" aria-label="Page navigation">
        <ul class="pagination justify-content-center">
          <li {% if users.has_prev %}class="page-item"{% else %} class="page-item disabled"{% endif %}><a class="page-link" href="{% if users.has_prev %}{{ url_for('user_maintenance', page=users.prev_num) }}{% else %}#{% endif %}">前へ</a></li>

    
          {% for page_num in users.iter_pages(left_edge=1, right_edge=1, left_current=1, right_current=2) %}  
            {% if page_num %}
                {% if users.page == page_num %}
                    <li class="page-item disabled"><a class="page-link" href="#">{{ page_num }}</a></li>
                {% else %}
                    <li class="page-item"><a class="page-link" href="{{ url_for('user_maintenance', page=page_num) }}">{{ page_num }}</a></li>
                {% endif %}
            {% else %}
                <li class="page-item disabled"><a class="page-link" href="#">&hellip;</a></li>
            {% endif %}
          {% endfor %}

          <li {% if users.has_next %}class="page-item"{% else %} class="page-item disabled"{% endif %}><a class="page-link" href="{% if users.has_next %}{{ url_for('user_maintenance', page=users.next_num) }}{% else %}#{% endif %}">次へ</a></li>
        </ul>
      </nav>
      
{% endblock %}  
0

1Answer

コメントの仕方に問題があるんではないでしょうか

<!-- {% for user in users %} -->

jinja2だと以下のようにするのが正しい

{# {% for user in users %} #}
1

Comments

  1. @qiitataro

    Questioner
    有難うございます!!上記で無事解決できました!!
    2日間、このエラーで悩みました。。。

Your answer might help someone💌