博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
10.4 用户头像
阅读量:4096 次
发布时间:2019-05-25

本文共 1228 字,大约阅读时间需要 4 分钟。

通过显示用户头像, 我们可以进一步改进资料页面的外观。

一. 修改|-app/models

class User(UserMixin, db.Model):    avatar_hash = db.Column(db.String(32)) #1       def __init__(self, **kwargs):        super(User, self).__init__(**kwargs)        #...        self.avatar_hash = hashlib.md5(self.email.encode('utf-8')).hexdigest()  #1    def change_email(self, new_email): #2        self.email = new_email        self.avatar_hash = hashlib.md5(self.email.encode('utf-8')).hexdigest()        db.session.add(self)        return True    def gravatar(self, size=100, default='identicon', rating='g'):        if request.is_secure:            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() #1   return '{url}/{hash}?s={size}&d={default}&r={rating}'.format(url=url, hash=hash, size=size, default=default, rating=rating)

二. 修改|-app/templates/user.html

三. 代码理解

#1

计算email的hash值是一项CPU密集型操作, 如果在某个页面生成大量头像, 计算量会非常大。因此我们在User表中增加一avatar_hash属性, 在构造函数中对用户的avatar_hash进行赋值, 以后调用gravatar生成hash的时候, 先从数据库中查找用户的avatar_hash, 如果没有再计算, 会节省很多计算量。

#2

我们添加修改email的函数change_email, 用户改完email后, 需要修改avatar_hash。

四. 运行效果

我们在导航条添加了头像的缩略图, 原理跟标题二相似。

你可能感兴趣的文章
[JAVA学习笔记-77]关于BlockingQueue
查看>>
[JAVA学习笔记-78]lockInterruptibly
查看>>
[JAVA学习笔记-80]Java service wrapper入门
查看>>
[JAVA学习笔记-87]CompletionService简单分析
查看>>
[JAVA学习笔记-88]DelayQueue实现Leader-Follower pattern
查看>>
[JAVA学习笔记-95]REST框架浅析
查看>>
[JAVA学习笔记-96]ThreadLocal
查看>>
[JAVA学习笔记-97]ActiveObject模式的Scheduler的关键实现
查看>>
【代码积累-1】ActiveObject
查看>>
【代码积累-2】binary search
查看>>
【代码积累-3】bubble sort
查看>>
【代码积累-4】cal MD5
查看>>
【代码积累】condition of lock
查看>>
【代码积累】countdown latch
查看>>
【代码积累】semaphore
查看>>
【代码积累】Date split
查看>>
【代码积累】Enum
查看>>
【代码积累】Event handling framrwork
查看>>
【代码积累】factory pattern without reflection
查看>>
【代码积累】FlexibleIterator
查看>>