Merge pull request #181 from liangliangyy/dev

友链功能优化 close #176
pull/12/head
车亮亮 7 years ago committed by GitHub
commit 15dcbd4764
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -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)

@ -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)

@ -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,

@ -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

@ -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

@ -53,7 +53,7 @@
{% block sidebar %}
{% load_sidebar user %}
{% load_sidebar user 'i' %}
{% endblock %}

@ -1,5 +1,6 @@
{% extends 'share_layout/base.html' %}
{% load blog_tags %}
{% load cache %}
{% block header %}
<title>{{ article.title }} | {{ SITE_DESCRIPTION }}</title>
<meta property="og:type" content="article"/>
@ -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 %}

@ -37,10 +37,10 @@
</div><!-- #primary -->
{% 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 %}

@ -39,7 +39,7 @@
{% block sidebar %}
{% load_sidebar user %}
{% load_sidebar user 'i' %}
{% endblock %}

@ -52,7 +52,7 @@
{% block sidebar %}
{% load_sidebar request.user %}
{% load_sidebar request.user 'i' %}
{% endblock %}

@ -63,10 +63,10 @@
{% block content %}
{% endblock %}
{% cache 36000 sidebar request.user.username %}
{% block sidebar %}
{% endblock %}
{% endcache %}
{% block sidebar %}
{% endblock %}
</div><!-- #main .wrapper -->
{% include 'share_layout/footer.html' %}

@ -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
Loading…
Cancel
Save