Flask实战3-用户资料[用户头像]

使用Gravatar提供的用户头像。Gravatar 是一个行业领先的头像服务,能把头像和电子邮件地址关联起来。用户先要到 http://gravatar.com 中注册账户,然后上传图 片。生成头像的 URL 时,要计算电子邮件地址的 MD5 散列值:

 (venv) $ python
 >>> import hashlib
 >>> hashlib.md5('[email protected]'.encode('utf-8')).hexdigest()
 'd4c74594d841139328695756648b6bd6'

生成的头像URL是在 http://www.gravatar.com/avatar/ 或 https://secure.gravatar.com/avatar/ 之后加上这个 MD5 散列值。例如,你在浏览器的地址栏中输入 http://www.gravatar.com/ avatar/d4c74594d841139328695756648b6bd6,就会看到电子邮件地址 [email protected] 对应的头像图片, 当email没有在gravatar中注册时,会放回一些默认的头像:

在User模型中添加个构建gravatar URL的方法:

class User(db.Model, UserMixin):
    # ...

    def gravatar(self, size=100, default='identicon', rating='g'):
        if request.is_secure:
            url = 'https://s.gravatar.com/avatar'
        else:
            url = 'http://www.gravatar.com/avatar'
        hash = hashlib.md5(self.email.encode('utf-8')).hexdigest()
        return '{url}/{hash}?s={size}&d={default}&r={rating}'.format(
            url=url, hash=hash, size=size, default=default, rating=rating)

在视图模版中使用

...
![]({{ post.author.gravatar(size=40) }})
...

你可能感兴趣的:(Flask实战3-用户资料[用户头像])