学习随笔 Flask用户头像

昨日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)

猜你喜欢

转载自blog.csdn.net/hongchen37/article/details/80375420