diff --git a/blog/templatetags/blog_tags.py b/blog/templatetags/blog_tags.py index dd552f0..4580a8f 100644 --- a/blog/templatetags/blog_tags.py +++ b/blog/templatetags/blog_tags.py @@ -25,7 +25,7 @@ from django.shortcuts import get_object_or_404 import hashlib import urllib from comments.models import Comment -from DjangoBlog.utils import cache_decorator +from DjangoBlog.utils import cache_decorator, cache from django.contrib.auth import get_user_model from oauth.models import OAuthUser from django.contrib.sites.models import Site @@ -262,17 +262,23 @@ def load_article_detail(article, isindex, user): @register.filter def gravatar_url(email, size=40): """获得gravatar头像""" - usermodels = OAuthUser.objects.filter(email=email) - if usermodels: - o = list(filter(lambda x: x.picture is not None, usermodels)) - if o: - return o[0].picture - email = email.encode('utf-8') - - default = "https://resource.lylinux.net/image/2017/03/26/120117.jpg".encode('utf-8') - - return "https://www.gravatar.com/avatar/%s?%s" % ( - hashlib.md5(email.lower()).hexdigest(), urllib.parse.urlencode({'d': default, 's': str(size)})) + cachekey = 'gravatat/' + email + if cache.get(cachekey): + return cache.get(cachekey) + else: + usermodels = OAuthUser.objects.filter(email=email) + if usermodels: + o = list(filter(lambda x: x.picture is not None, usermodels)) + if o: + return o[0].picture + email = email.encode('utf-8') + + default = "https://resource.lylinux.net/image/2017/03/26/120117.jpg".encode('utf-8') + + url = "https://www.gravatar.com/avatar/%s?%s" % ( + hashlib.md5(email.lower()).hexdigest(), urllib.parse.urlencode({'d': default, 's': str(size)})) + cache.set(cachekey, url, 60 * 60 * 10) + return url # return an image tag with the gravatar