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