qiitataro
@qiitataro

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Flask '__main__.User object' has no attribute エラー

ユーザーのメンテナンスページで、管理者の場合でログインしているときだけ、
ユーザー登録ボタンを表示する処理を書きましたが、以下2つのエラーが出てしまい
解決策が、分からない状態です。

エラーは、jinja2が出しているので、htmlファイルを見直し、html内に記載した
コメントも削除してみましたが、エラーを解決することができません。

下記2つのエラーの解決方法をご教示いただければと思います。

1つめ
jinja2.exceptions.UndefinedError: '__main__.User object' has no attribute 'is_administrator'

2つめ
ine 13, in block 'content' {% if current_user.is_administrator() %}
{% 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>
    {% if current_user.is_administrator() %}
    <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>
    {% endif %}
    <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>
                                {% for user in users.items %}
                                <tr>
                                    <td>{{ user.id }}</td>
                                    <td>{{ user.username }}</td>
                                    <td>{{ user.email }}</td>
                                    <td>{{ user.administrator }}</td>
                                    <td><a href="#">ブログ投稿数</a></td>
                                    <td><a href="{{ url_for('account', user_id=user.id) }}" class="btn btn-secondary">
                                        変更
                                    </a></td>
                                </tr>
                                {% endfor %}
                            </tbody>
                        </table>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <nav class="my-2" aria-label="Page navigation">
        <ul class="pagination justify-content-center">
          <!-- <li class="page-item"><a class="page-link" href="#">前へ</a></li> -->
          <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=user.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=users.prev_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.prev_num) }}{% else %}#{% endif %}">次へ</a></li>
        </ul>
    </nav>
      
{% endblock %}  
app.py
@app.route('/logout')
@login_required
def logout():
    logout_user()
    return redirect(url_for('login'))


    @property
    def password(sele):
        raise AttributeError('PWのプロパティ-を直接参照不可')
    
    @password.setter
    def password(self, password):
        self.password_hash = generate_password_hash(password)
    

    
    # 以下を追加
    def is_administrator(self):
        if self.administrator == "1":
            return 1
        else:
            return 0
0

1Answer

エラーの内容からざっくり察するに、どこかにUserクラスがあって、そのクラスのメソッドとしてis_administratorを追加しないといけないのでは?

0Like

Your answer might help someone💌