昨日BUG:权限异常。。。无法判断是否是管理员的问题
{% if current_user.is_administrator() %} <a class="btn btn-danger" href="{{ url_for('.edit_profile_admin', id=user.id) }}"> Edit Profile [Admin] </a> {% endif %}
答:是因为没运行Role.insert_roles导致数据库roles表为空,在manager.py添加即可。
Gravatar用户头像
class User(UserMixin, db.Model): # ... avatar_hash = db.Column(db.String(32)) def __init__(self, **kwargs): # 初始化用户角色 super(User, self).__init__(**kwargs) if self.role is None: if self.email == current_app.config['FLASKY_ADMIN']: # 管理员用户邮箱的匹配 self.role = Role.query.filter_by(name='Administrator').first() else: # 否则都是默认用户 self.role = Role.query.filter_by(default=True).first() if self.email is not None and self.avatar_hash is None: # 生成邮箱md5以获取图片 self.avatar_hash = hashlib.md5(self.email.encode('utf-8')).hexdigest() def gravatar(self, size=100, default='identicon', rating='g'): if request.is_secure: # 判断是否是https url = 'https://secure.gravatar.com/avatar' else: url = 'http://www.gravatar.com/avatar' hash = self.avatar_hash or hashlib.md5(self.email.encode('utf-8')).hexdigest() return '{url}/{hash}?s={size}&d={default}&r={rating}'.format( # 图片URL url=url, hash=hash, size=size, default=default, rating=rating)