From bcf6a08bf9dbfd7488beedb46c6261d2c7a5fc44 Mon Sep 17 00:00:00 2001 From: liangliang Date: Wed, 18 Jul 2018 23:13:36 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=BA=E7=94=A8=E6=88=B7=E5=A4=B4=E5=83=8F?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- blog/templatetags/blog_tags.py | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) 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