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="#">…</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