From 4db213a56c2c9b9e4a72ba718c1411746ecdc042 Mon Sep 17 00:00:00 2001 From: liangliangyy Date: Sat, 3 Nov 2018 13:10:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=8B=E9=93=BE=E5=8A=9F=E8=83=BD=E4=BC=98?= =?UTF-8?q?=E5=8C=96=20close=20#176?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DjangoBlog/utils.py | 12 +++++++----- blog/models.py | 10 ++++++++++ blog/templatetags/blog_tags.py | 9 +++++---- blog/views.py | 7 +++++++ requirements.txt | 8 ++++---- templates/blog/article_archives.html | 2 +- templates/blog/article_detail.html | 10 ++++++---- templates/blog/article_index.html | 12 ++++++------ templates/blog/error_page.html | 2 +- templates/search/search.html | 2 +- templates/share_layout/base.html | 8 ++++---- travis_test/requirements.txt | 10 +++++----- 12 files changed, 57 insertions(+), 35 deletions(-) diff --git a/DjangoBlog/utils.py b/DjangoBlog/utils.py index 0a4fcf4..176d34b 100644 --- a/DjangoBlog/utils.py +++ b/DjangoBlog/utils.py @@ -60,10 +60,10 @@ def cache_decorator(expiration=3 * 60): key = m.hexdigest() value = cache.get(key) if value: - logger.info('cache_decorator get cache:%s key:%s' % (func.__name__, key)) + # logger.info('cache_decorator get cache:%s key:%s' % (func.__name__, key)) return value else: - logger.info('cache_decorator set cache:%s key:%s' % (func.__name__, key)) + # logger.info('cache_decorator set cache:%s key:%s' % (func.__name__, key)) value = func(*args, **kwargs) cache.set(key, value, expiration) return value @@ -241,6 +241,8 @@ def save_user_avatar(url): def delete_view_cache(username): from django.core.cache.utils import make_template_fragment_key - key = make_template_fragment_key('sidebar', [username]) - logger.info('delete sidebar key:' + key) - cache.delete(key) + from blog.models import LINK_SHOW_TYPE + keys = (make_template_fragment_key('sidebar', [username + x[0]]) for x in LINK_SHOW_TYPE) + for k in keys: + logger.info('delete sidebar key:' + k) + cache.delete(k) diff --git a/blog/models.py b/blog/models.py index 16957d8..9191d83 100644 --- a/blog/models.py +++ b/blog/models.py @@ -14,6 +14,13 @@ from django.utils.timezone import now logger = logging.getLogger(__name__) +LINK_SHOW_TYPE = ( + ('i', '首页'), + ('l', '列表页'), + ('p', '文章页面'), + ('a', '全站'), +) + class BaseModel(models.Model): id = models.AutoField(primary_key=True) @@ -207,9 +214,12 @@ class Tag(BaseModel): class Links(models.Model): """友情链接""" + name = models.CharField('链接名称', max_length=30, unique=True) link = models.URLField('链接地址') sequence = models.IntegerField('排序', unique=True) + is_enable = models.BooleanField('是否显示', default=True, blank=False, null=False) + show_type = models.CharField('显示类型', max_length=1, choices=LINK_SHOW_TYPE, default='i') created_time = models.DateTimeField('创建时间', default=now) last_mod_time = models.DateTimeField('修改时间', default=now) diff --git a/blog/templatetags/blog_tags.py b/blog/templatetags/blog_tags.py index ce4eb72..63bc169 100644 --- a/blog/templatetags/blog_tags.py +++ b/blog/templatetags/blog_tags.py @@ -14,6 +14,7 @@ """ from django import template +from django.db.models import Q from django.conf import settings from django.template.defaultfilters import stringfilter from django.utils.safestring import mark_safe @@ -126,7 +127,7 @@ def load_articletags(article): @register.inclusion_tag('blog/tags/sidebar.html') -def load_sidebar(user): +def load_sidebar(user, linktype): """ 加载侧边栏 :return: @@ -139,7 +140,7 @@ def load_sidebar(user): 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.all() + links = Links.objects.filter(is_enable=True).filter(Q(show_type=str(linktype)) | Q(show_type='a')) commment_list = Comment.objects.filter(is_enable=True).order_by('-id')[:blogsetting.sidebar_comment_count] # show_adsense = settings.SHOW_GOOGLE_ADSENSE # 标签云 计算字体大小 @@ -150,7 +151,7 @@ def load_sidebar(user): if tags and len(tags) > 0: s = list(map(lambda t: (t, t.get_article_count()), tags)) count = sum(map(lambda t: t[1], s)) - dd = 1 if count == 0 else count / len(tags) + dd = 1 if count == 0 and not len(tags) else count / len(tags) sidebar_tags = list(map(lambda x: (x[0], x[1], (x[1] / dd) * increment + 10), s)) return { @@ -158,9 +159,9 @@ def load_sidebar(user): 'sidebar_categorys': sidebar_categorys, 'most_read_articles': most_read_articles, 'article_dates': dates, - 'sidabar_links': links, '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, diff --git a/blog/views.py b/blog/views.py index 123446e..ce3b4af 100644 --- a/blog/views.py +++ b/blog/views.py @@ -31,6 +31,7 @@ class ArticleListView(ListView): page_type = '' paginate_by = settings.PAGINATE_BY page_kwarg = 'page' + link_type = 'l' def get_view_cache_key(self): return self.request.get['pages'] @@ -70,8 +71,14 @@ class ArticleListView(ListView): value = self.get_queryset_from_cache(key) return value + def get_context_data(self, **kwargs): + kwargs['linktype'] = self.link_type + return super(ArticleListView, self).get_context_data(**kwargs) + class IndexView(ArticleListView): + link_type = 'i' + def get_queryset_data(self): article_list = Article.objects.filter(type='a', status='p') return article_list diff --git a/requirements.txt b/requirements.txt index 72b4e3b..b14f74f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,7 +7,7 @@ cffi==1.11.5 chardet==3.0.4 coverage==4.5.1 cryptography==2.3.1 -Django==2.1.2 +Django==2.1.3 django-appconf==1.0.2 django-autoslug==1.9.3 django-compressor==2.2 @@ -31,10 +31,10 @@ pycparser==2.19 Pygments==2.2.0 pylint==2.1.1 PyMySQL==0.9.2 -pyparsing==2.2.2 +pyparsing==2.3.0 python-memcached==1.59 python-slugify==1.2.6 -pytz==2018.5 +pytz==2018.7 raven==6.9.0 rcssmin==1.0.6 requests==2.20.0 @@ -42,7 +42,7 @@ rjsmin==1.0.12 six==1.11.0 sqlparse==0.2.4 Unidecode==1.0.22 -urllib3==1.24 +urllib3==1.24.1 webencodings==0.5.1 WeRoBot==1.6.0 Whoosh==2.7.4 diff --git a/templates/blog/article_archives.html b/templates/blog/article_archives.html index 35c6be9..42649a5 100644 --- a/templates/blog/article_archives.html +++ b/templates/blog/article_archives.html @@ -53,7 +53,7 @@ {% block sidebar %} - {% load_sidebar user %} + {% load_sidebar user 'i' %} {% endblock %} diff --git a/templates/blog/article_detail.html b/templates/blog/article_detail.html index 5231578..2931b2d 100755 --- a/templates/blog/article_detail.html +++ b/templates/blog/article_detail.html @@ -1,5 +1,6 @@ {% extends 'share_layout/base.html' %} {% load blog_tags %} +{% load cache %} {% block header %} {{ article.title }} | {{ SITE_DESCRIPTION }} @@ -70,9 +71,10 @@ {% endblock %} - {% block sidebar %} - {% load_sidebar user %} + {% with request.user.username|add:'p' as cachekey %} + {% cache 36000 sidebar cachekey %} + {% load_sidebar user 'p' %} + {% endcache %} + {% endwith %} {% endblock %} - - diff --git a/templates/blog/article_index.html b/templates/blog/article_index.html index 1dfa580..f6f96bb 100644 --- a/templates/blog/article_index.html +++ b/templates/blog/article_index.html @@ -37,10 +37,10 @@ {% endblock %} - - {% block sidebar %} - {% load_sidebar user %} -{% endblock %} - - + {% with request.user.username|add:linktype as cachekey %} + {% cache 36000 sidebar cachekey %} + {% load_sidebar user linktype %} + {% endcache %} + {% endwith %} +{% endblock %} \ No newline at end of file diff --git a/templates/blog/error_page.html b/templates/blog/error_page.html index 66f4b41..2a04ca4 100644 --- a/templates/blog/error_page.html +++ b/templates/blog/error_page.html @@ -39,7 +39,7 @@ {% block sidebar %} - {% load_sidebar user %} + {% load_sidebar user 'i' %} {% endblock %} diff --git a/templates/search/search.html b/templates/search/search.html index da5c475..128aef4 100644 --- a/templates/search/search.html +++ b/templates/search/search.html @@ -52,7 +52,7 @@ {% block sidebar %} - {% load_sidebar request.user %} + {% load_sidebar request.user 'i' %} {% endblock %} diff --git a/templates/share_layout/base.html b/templates/share_layout/base.html index 17cfcd6..5d5164d 100644 --- a/templates/share_layout/base.html +++ b/templates/share_layout/base.html @@ -63,10 +63,10 @@ {% block content %} {% endblock %} - {% cache 36000 sidebar request.user.username %} - {% block sidebar %} - {% endblock %} - {% endcache %} + + {% block sidebar %} + {% endblock %} + {% include 'share_layout/footer.html' %} diff --git a/travis_test/requirements.txt b/travis_test/requirements.txt index 2aceac8..96163ce 100644 --- a/travis_test/requirements.txt +++ b/travis_test/requirements.txt @@ -7,7 +7,7 @@ cffi==1.11.5 chardet==3.0.4 coverage==4.5.1 cryptography==2.3.1 -Django==2.1.2 +Django==2.1.3 django-appconf==1.0.2 django-autoslug==1.9.3 django-compressor==2.2 @@ -31,9 +31,9 @@ pycparser==2.19 Pygments==2.2.0 pylint==2.1.1 PyMySQL==0.9.2 -pyparsing==2.2.2 +pyparsing==2.3.0 python-slugify==1.2.6 -pytz==2018.5 +pytz==2018.7 raven==6.9.0 rcssmin==1.0.6 requests==2.20.0 @@ -41,9 +41,9 @@ rjsmin==1.0.12 six==1.11.0 sqlparse==0.2.4 Unidecode==1.0.22 -urllib3==1.24 +urllib3==1.24.1 webencodings==0.5.1 WeRoBot==1.6.0 Whoosh==2.7.4 wrapt==1.10.11 -xmltodict==0.11.0 +xmltodict==0.11.0 \ No newline at end of file