diff --git a/DjangoBlog/utils.py b/DjangoBlog/utils.py index fddc0e4..619db63 100644 --- a/DjangoBlog/utils.py +++ b/DjangoBlog/utils.py @@ -70,6 +70,14 @@ def cache_decorator(expiration=3 * 60): def expire_view_cache(path, servername, serverport, key_prefix=None): + ''' + 刷新视图缓存 + :param path:url路径 + :param servername:host + :param serverport:端口 + :param key_prefix:前缀 + :return:是否成功 + ''' from django.http import HttpRequest from django.utils.cache import get_cache_key @@ -87,6 +95,14 @@ def expire_view_cache(path, servername, serverport, key_prefix=None): def block_code(text, lang, inlinestyles=False, linenos=False): + ''' + markdown代码高亮 + :param text: + :param lang: + :param inlinestyles: + :param linenos: + :return: + ''' if not lang: text = text.strip() return u'
%s\n' % mistune.escape(text)
@@ -113,6 +129,10 @@ def get_current_site():
class BlogMarkDownRenderer(mistune.Renderer):
+ '''
+ markdown渲染
+ '''
+
def block_code(self, text, lang=None):
# renderer has an options
inlinestyles = self.options.get('inlinestyles')
@@ -191,6 +211,11 @@ def get_blog_setting():
def save_user_avatar(url):
+ '''
+ 保存用户头像
+ :param url:头像url
+ :return: 本地路径
+ '''
setting = get_blog_setting()
logger.info(url)
try:
diff --git a/blog/views.py b/blog/views.py
index e6a7c90..b4205a9 100644
--- a/blog/views.py
+++ b/blog/views.py
@@ -54,7 +54,11 @@ class ArticleListView(ListView):
raise NotImplementedError()
def get_queryset_from_cache(self, cache_key):
- # raise NotImplementedError()
+ '''
+ 缓存页面数据
+ :param cache_key: 缓存key
+ :return:
+ '''
value = cache.get(cache_key)
if value:
logger.info('get view cache.key:{key}'.format(key=cache_key))
@@ -66,6 +70,10 @@ class ArticleListView(ListView):
return article_list
def get_queryset(self):
+ '''
+ 重写默认,从缓存获取数据
+ :return:
+ '''
key = self.get_queryset_cache_key()
value = self.get_queryset_from_cache(key)
return value
@@ -76,6 +84,9 @@ class ArticleListView(ListView):
class IndexView(ArticleListView):
+ '''
+ 首页
+ '''
link_type = 'i'
def get_queryset_data(self):
@@ -88,6 +99,9 @@ class IndexView(ArticleListView):
class ArticleDetailView(DetailView):
+ '''
+ 文章详情页面
+ '''
template_name = 'blog/article_detail.html'
model = Article
pk_url_kwarg = 'article_id'
@@ -103,7 +117,7 @@ class ArticleDetailView(DetailView):
articleid = int(self.kwargs[self.pk_url_kwarg])
comment_form = CommentForm()
user = self.request.user
-
+ # 如果用户已经登录,则隐藏邮件和用户名输入框
if user.is_authenticated and not user.is_anonymous and user.email and user.username:
comment_form.fields.update({
'email': forms.CharField(widget=forms.HiddenInput()),
@@ -125,6 +139,9 @@ class ArticleDetailView(DetailView):
class CategoryDetailView(ArticleListView):
+ '''
+ 分类目录列表
+ '''
page_type = "分类目录归档"
def get_queryset_data(self):
@@ -158,6 +175,9 @@ class CategoryDetailView(ArticleListView):
class AuthorDetailView(ArticleListView):
+ '''
+ 作者详情页
+ '''
page_type = '作者文章归档'
def get_queryset_cache_key(self):
@@ -177,18 +197,10 @@ class AuthorDetailView(ArticleListView):
return super(AuthorDetailView, self).get_context_data(**kwargs)
-class TagListView(ListView):
- template_name = ''
- context_object_name = 'tag_list'
-
- def get_queryset(self):
- tags_list = []
- tags = Tag.objects.all()
- for t in tags:
- t.article_set.count()
-
-
class TagDetailView(ArticleListView):
+ '''
+ 标签列表页面
+ '''
page_type = '分类标签归档'
def get_queryset_data(self):
@@ -216,6 +228,9 @@ class TagDetailView(ArticleListView):
class ArchivesView(ArticleListView):
+ '''
+ 文章归档页面
+ '''
page_type = '文章归档'
paginate_by = None
page_kwarg = None
@@ -231,6 +246,11 @@ class ArchivesView(ArticleListView):
@csrf_exempt
def fileupload(request):
+ '''
+ 该方法需自己写调用端来上传图片,该方法仅提供图床功能
+ :param request:
+ :return:
+ '''
if request.method == 'POST':
sign = request.GET.get('sign', None)
if not sign:
diff --git a/requirements.txt b/requirements.txt
index 87c7ae3..6d0684a 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -6,10 +6,10 @@ certifi==2018.11.29
cffi==1.11.5
chardet==3.0.4
coverage==4.5.2
-cryptography==2.4.2
+cryptography==2.5
Django==2.1.5
django-appconf==1.0.2
-django-autoslug==1.9.3
+django-autoslug==1.9.4
django-compressor==2.2
django-debug-toolbar==1.11
django-haystack==2.8.1
@@ -19,19 +19,19 @@ django-uuslug==1.1.8
idna==2.8
isort==4.3.4
jieba==0.39
-jsonpickle==1.0
+jsonpickle==1.1
lazy-object-proxy==1.3.1
markdown2==2.3.7
mccabe==0.6.1
mistune==0.8.4
olefile==0.46
-packaging==18.0
+packaging==19.0
Pillow==5.4.1
pycparser==2.19
Pygments==2.3.1
pylint==2.2.2
PyMySQL==0.9.3
-pyparsing==2.3.0
+pyparsing==2.3.1
python-memcached==1.59
python-slugify==2.0.1
pytz==2018.9
@@ -46,5 +46,5 @@ urllib3==1.24.1
webencodings==0.5.1
WeRoBot==1.7.0
Whoosh==2.7.4
-wrapt==1.11.0
+wrapt==1.11.1
xmltodict==0.11.0
diff --git a/travis_test/requirements.txt b/travis_test/requirements.txt
index b9afd08..31e3b9d 100644
--- a/travis_test/requirements.txt
+++ b/travis_test/requirements.txt
@@ -6,10 +6,10 @@ certifi==2018.11.29
cffi==1.11.5
chardet==3.0.4
coverage==4.5.2
-cryptography==2.4.2
+cryptography==2.5
Django==2.1.5
django-appconf==1.0.2
-django-autoslug==1.9.3
+django-autoslug==1.9.4
django-compressor==2.2
django-debug-toolbar==1.11
django-haystack==2.8.1
@@ -19,19 +19,19 @@ django-uuslug==1.1.8
idna==2.8
isort==4.3.4
jieba==0.39
-jsonpickle==1.0
+jsonpickle==1.1
lazy-object-proxy==1.3.1
markdown2==2.3.7
mccabe==0.6.1
mistune==0.8.4
olefile==0.46
-packaging==18.0
+packaging==19.0
Pillow==5.4.1
pycparser==2.19
Pygments==2.3.1
pylint==2.2.2
PyMySQL==0.9.3
-pyparsing==2.3.0
+pyparsing==2.3.1
python-slugify==2.0.1
pytz==2018.9
raven==6.10.0
@@ -45,5 +45,5 @@ urllib3==1.24.1
webencodings==0.5.1
WeRoBot==1.7.0
Whoosh==2.7.4
-wrapt==1.11.0
+wrapt==1.11.1
xmltodict==0.11.0
\ No newline at end of file