From d47169bbc395f83251dc07bddad2b3078c656376 Mon Sep 17 00:00:00 2001 From: liangliangyy Date: Wed, 17 Nov 2021 11:25:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BE=A7=E8=BE=B9=E6=A0=8F=E7=BC=93=E5=AD=98?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- blog/templatetags/blog_tags.py | 101 +++++++++--------- djangoblog/utils.py | 9 +- templates/blog/article_detail.html | 29 +---- templates/blog/article_index.html | 27 +---- templates/blog/tags/sidebar.html | 38 +++++-- templates/comments/tags/comment_item.html | 2 +- .../comments/tags/comment_item_tree.html | 10 +- 7 files changed, 92 insertions(+), 124 deletions(-) diff --git a/blog/templatetags/blog_tags.py b/blog/templatetags/blog_tags.py index 137f7ca..37b2557 100644 --- a/blog/templatetags/blog_tags.py +++ b/blog/templatetags/blog_tags.py @@ -11,10 +11,10 @@ from django.template.defaultfilters import stringfilter from django.urls import reverse from django.utils.safestring import mark_safe -from djangoblog.utils import cache -from djangoblog.utils import get_current_site from blog.models import Article, Category, Tag, Links, SideBar, LinkShowType from comments.models import Comment +from djangoblog.utils import cache +from djangoblog.utils import get_current_site from oauth.models import OAuthUser logger = logging.getLogger(__name__) @@ -26,8 +26,6 @@ register = template.Library() def timeformat(data): try: return data.strftime(settings.TIME_FORMAT) - # print(data.strftime(settings.TIME_FORMAT)) - # return "ddd" except Exception as e: logger.error(e) return "" @@ -125,50 +123,57 @@ def load_sidebar(user, linktype): 加载侧边栏 :return: """ - logger.info('load sidebar') - from djangoblog.utils import get_blog_setting - blogsetting = get_blog_setting() - recent_articles = Article.objects.filter( - status='p')[:blogsetting.sidebar_article_count] - sidebar_categorys = Category.objects.all() - extra_sidebars = SideBar.objects.filter( - is_enable=True).order_by('sequence') - most_read_articles = Article.objects.filter(status='p').order_by( - '-views')[:blogsetting.sidebar_article_count] - dates = Article.objects.datetimes('created_time', 'month', order='DESC') - links = Links.objects.filter(is_enable=True).filter( - Q(show_type=str(linktype)) | Q(show_type=LinkShowType.A)) - commment_list = Comment.objects.filter(is_enable=True).order_by( - '-id')[:blogsetting.sidebar_comment_count] - # 标签云 计算字体大小 - # 根据总数计算出平均值 大小为 (数目/平均值)*步长 - increment = 5 - tags = Tag.objects.all() - sidebar_tags = None - if tags and len(tags) > 0: - s = [t for t in [(t, t.get_article_count()) for t in tags] if t[1]] - count = sum([t[1] for t in s]) - dd = 1 if (count == 0 or not len(tags)) else count / len(tags) - import random - sidebar_tags = list( - map(lambda x: (x[0], x[1], (x[1] / dd) * increment + 10), s)) - random.shuffle(sidebar_tags) - - return { - 'recent_articles': recent_articles, - 'sidebar_categorys': sidebar_categorys, - 'most_read_articles': most_read_articles, - 'article_dates': dates, - 'sidebar_comments': commment_list, - 'user': user, - 'sidabar_links': links, - 'show_google_adsense': blogsetting.show_google_adsense, - 'google_adsense_codes': blogsetting.google_adsense_codes, - 'open_site_comment': blogsetting.open_site_comment, - 'show_gongan_code': blogsetting.show_gongan_code, - 'sidebar_tags': sidebar_tags, - 'extra_sidebars': extra_sidebars - } + value = cache.get("sidebar" + linktype) + if value: + value['user'] = user + return value + else: + logger.info('load sidebar') + from djangoblog.utils import get_blog_setting + blogsetting = get_blog_setting() + recent_articles = Article.objects.filter( + status='p')[:blogsetting.sidebar_article_count] + sidebar_categorys = Category.objects.all() + extra_sidebars = SideBar.objects.filter( + is_enable=True).order_by('sequence') + most_read_articles = Article.objects.filter(status='p').order_by( + '-views')[:blogsetting.sidebar_article_count] + dates = Article.objects.datetimes('created_time', 'month', order='DESC') + links = Links.objects.filter(is_enable=True).filter( + Q(show_type=str(linktype)) | Q(show_type=LinkShowType.A)) + commment_list = Comment.objects.filter(is_enable=True).order_by( + '-id')[:blogsetting.sidebar_comment_count] + # 标签云 计算字体大小 + # 根据总数计算出平均值 大小为 (数目/平均值)*步长 + increment = 5 + tags = Tag.objects.all() + sidebar_tags = None + if tags and len(tags) > 0: + s = [t for t in [(t, t.get_article_count()) for t in tags] if t[1]] + count = sum([t[1] for t in s]) + dd = 1 if (count == 0 or not len(tags)) else count / len(tags) + import random + sidebar_tags = list( + map(lambda x: (x[0], x[1], (x[1] / dd) * increment + 10), s)) + random.shuffle(sidebar_tags) + + value = { + 'recent_articles': recent_articles, + 'sidebar_categorys': sidebar_categorys, + 'most_read_articles': most_read_articles, + 'article_dates': dates, + 'sidebar_comments': commment_list, + 'sidabar_links': links, + 'show_google_adsense': blogsetting.show_google_adsense, + 'google_adsense_codes': blogsetting.google_adsense_codes, + 'open_site_comment': blogsetting.open_site_comment, + 'show_gongan_code': blogsetting.show_gongan_code, + 'sidebar_tags': sidebar_tags, + 'extra_sidebars': extra_sidebars + } + cache.set("sidebar" + linktype, value, 60 * 60 * 60 * 3) + value['user'] = user + return value @register.inclusion_tag('blog/tags/article_meta_info.html') diff --git a/djangoblog/utils.py b/djangoblog/utils.py index 30d88d8..c98dd3d 100644 --- a/djangoblog/utils.py +++ b/djangoblog/utils.py @@ -177,6 +177,7 @@ def save_user_avatar(url): ''' setting = get_blog_setting() logger.info(url) + try: imgname = url.split('/')[-1] if imgname: @@ -184,9 +185,6 @@ def save_user_avatar(url): basedir=setting.resource_path, img=imgname) if os.path.exists(path): os.remove(path) - except BaseException: - pass - try: rsp = requests.get(url, timeout=2) if rsp.status_code == 200: basepath = r'{basedir}/avatar/'.format( @@ -208,11 +206,8 @@ def save_user_avatar(url): def delete_sidebar_cache(): - from django.core.cache.utils import make_template_fragment_key from blog.models import LinkShowType - keys = ( - make_template_fragment_key( - 'sidebar', ["sidebar" + x]) for x in LinkShowType.values) + keys = ["sidebar" + x for x in LinkShowType.values] for k in keys: logger.info('delete sidebar key:' + k) cache.delete(k) diff --git a/templates/blog/article_detail.html b/templates/blog/article_detail.html index 9ec51d3..f694db3 100755 --- a/templates/blog/article_detail.html +++ b/templates/blog/article_detail.html @@ -1,6 +1,6 @@ {% extends 'share_layout/base.html' %} {% load blog_tags %} -{% load cache %} + {% block header %} {{ article.title }} | {{ SITE_DESCRIPTION }} @@ -72,30 +72,5 @@ {% endblock %} {% block sidebar %} - {% with "sidear"|addstr:"p" as cachekey %} - {% cache 36000 sidebar cachekey %} - {% load_sidebar user "p" %} - {% endcache %} - {% endwith %} - - + {% load_sidebar user "p" %} {% endblock %} \ No newline at end of file diff --git a/templates/blog/article_index.html b/templates/blog/article_index.html index 8542733..0ee6150 100644 --- a/templates/blog/article_index.html +++ b/templates/blog/article_index.html @@ -38,30 +38,5 @@ {% endblock %} {% block sidebar %} - {% with "sidear"|addstr:linktype as cachekey %} - {% cache 36000 sidebar cachekey %} - {% load_sidebar user linktype %} - {% endcache %} - {% endwith %} - - + {% load_sidebar user linktype %} {% endblock %} \ No newline at end of file diff --git a/templates/blog/tags/sidebar.html b/templates/blog/tags/sidebar.html index 05f2da4..8e2d1b5 100755 --- a/templates/blog/tags/sidebar.html +++ b/templates/blog/tags/sidebar.html @@ -12,8 +12,8 @@ {% if extra_sidebars %} {% for sidebar in extra_sidebars %} -