修改标签等页面,待完善

master
车亮亮 9 years ago
parent 672b3a52da
commit b7a4570d96

@ -132,3 +132,8 @@ DATE_TIME_FORMAT = '%Y-%m-%d %H:%M:%S'
SITE_NAME = 'Django Blog'
SITE_DESCRIPTION = '大巧无工,重剑无锋.'
ARTICLE_SUB_LENGTH = 300
#bootstrap颜色样式
BOOTSTRAP_COLOR_TYPES = [
'default', 'primary', 'success', 'info', 'warning', 'danger'
]

@ -34,12 +34,11 @@ class Article(models.Model):
def get_absolute_url(self):
return reverse('blog:detail', kwargs={'article_id': self.pk})
def getCategoryNameTree(self):
def get_category_tree(self):
names = []
def parse(category):
names.append((category.name,category.get_absolute_url()))
names.append((category.name, category.get_absolute_url()))
if category.parent_category:
parse(category.parent_category)
@ -81,6 +80,12 @@ class Tag(models.Model):
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('blog:tag_detail', kwargs={'tag_name': self.name})
def get_article_count(self):
return Article.objects.filter(tags__name=self.name).distinct().count()
class Meta:
ordering = ['name']
verbose_name = "标签"

@ -172,5 +172,12 @@ h6, .h6 {
margin-top: 40px;
margin-bottom: auto;
color: #00CCFF;
border-bottom: 4px double #ededed;
}
.article_taglist {
margin-top: 40px;
margin-bottom: auto;
border-bottom: 4px double #ededed;
}

@ -18,6 +18,7 @@ from django.conf import settings
import markdown
from django.template.defaultfilters import stringfilter
from django.utils.safestring import mark_safe
import random
register = template.Library()
@ -36,13 +37,15 @@ def timeformat(data):
@stringfilter
def custom_markdown(content):
return mark_safe(markdown.markdown(content,
extensions=['markdown.extensions.fenced_code', 'markdown.extensions.codehilite'],
extensions=
['markdown.extensions.fenced_code',
'markdown.extensions.codehilite'],
safe_mode=True, enable_attributes=False))
@register.inclusion_tag('categorytree.html')
def parseCategoryName(article):
names = article.getCategoryNameTree()
@register.inclusion_tag('blog/categorytree.html')
def parsecategoryname(article):
names = article.get_category_tree()
names.append((settings.SITE_NAME, 'http://127.0.0.1:8000'))
names = names[::-1]
@ -50,6 +53,21 @@ def parseCategoryName(article):
return {'names': names}
@register.inclusion_tag('blog/articletaglist.html')
def loadarticletags(article):
tags = article.tags.all()
tags_list = []
for tag in tags:
url = tag.get_absolute_url()
count = tag.get_article_count()
tags_list.append((
url, count, tag, random.choice(settings.BOOTSTRAP_COLOR_TYPES)
))
return {
'article_tags_list': tags_list
}
"""
@register.tag
def parseCategoryName(parser,token):

@ -22,4 +22,5 @@ urlpatterns = [
url(r'^article/(?P<article_id>\d+)$', views.ArticleDetailView.as_view(), name='detail'),
url(r'^category/(?P<category_name>\w+)$', views.CategoryDetailView.as_view(), name='category_detail'),
url(r'^author/(?P<author_name>\w+)$', views.AuthorDetailView.as_view(), name='author_detail'),
url(r'^tags/(?P<tag_name>\w+)$', views.TagDetailView.as_view(), name='tag_detail'),
]

@ -13,32 +13,34 @@ from django.utils.safestring import mark_safe
class ArticleListView(ListView):
template_name = 'index.html'
# template_name属性用于指定使用哪个模板进行渲染
template_name = 'blog/index.html'
# context_object_name属性用于给上下文变量取名在模板中使用该名字
context_object_name = 'article_list'
def set_article_subbody(self, article_list):
for article in article_list:
article.body = article.body[0:settings.ARTICLE_SUB_LENGTH]
return article_list
def __init__(self):
self.page_description = ''
class IndexView(ArticleListView):
# template_name属性用于指定使用哪个模板进行渲染
# template_name = 'index.html'
# context_object_name属性用于给上下文变量取名在模板中使用该名字
# context_object_name = 'article_list'
def get_queryset(self):
article_list = Article.objects.filter(status='p')
for article in article_list:
article.body = article.body[0:settings.ARTICLE_SUB_LENGTH]
# article.body = markdown2.markdown(article.body)
# for article in article_list:
# article.body = article.body[0:settings.ARTICLE_SUB_LENGTH]
# # article.body = markdown2.markdown(article.body)
return article_list
return self.set_article_subbody(article_list)
class ArticleDetailView(DetailView):
template_name = 'articledetail.html'
template_name = 'blog/articledetail.html'
model = Article
pk_url_kwarg = 'article_id'
context_object_name = "article"
@ -58,12 +60,12 @@ class CategoryDetailView(ArticleListView):
def get_queryset(self):
categoryname = self.kwargs['category_name']
# print(categoryname)
self.page_description = '分类目录归档: %s '
self.page_description = '分类目录归档: %s ' % categoryname
article_list = Article.objects.filter(category__name=categoryname, status='p')
return article_list
return self.set_article_subbody(article_list)
def get_context_data(self, **kwargs):
# 增加额外的数据,这里返回一个文章分类,以字典的形式
# 增加额外的数据
kwargs['page_description'] = self.page_description
return super(CategoryDetailView, self).get_context_data(**kwargs)
@ -74,8 +76,31 @@ class AuthorDetailView(ArticleListView):
self.page_description = '作者文章归档: %s ' % author_name
article_list = Article.objects.filter(author__username=author_name)
return article_list
return self.set_article_subbody(article_list)
def get_context_data(self, **kwargs):
kwargs['page_description'] = self.page_description
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):
def get_queryset(self):
tag_name = self.kwargs['tag_name']
self.page_description = '分类标签: %s ' % tag_name
article_list = Article.objects.filter(tags__name=tag_name)
return self.set_article_subbody(article_list)
def get_context_data(self, **kwargs):
kwargs['page_description'] = self.page_description
return super(TagDetailView, self).get_context_data(**kwargs)

@ -10,7 +10,7 @@
<div class="blog-post">
<a href="#" class="blog-post-title">{{ article.title }}</a>
{% parseCategoryName article %}
{% parsecategoryname article %}
<p class="blog-post-meta">{% comment %}<a href="#">{{ article.category.name }}</a>{% endcomment %}
<time class="entry-date"
datetime="{{ article.created_time }}">
@ -21,7 +21,7 @@
{{ article.body|custom_markdown }}
</div><!-- /.blog-post -->
{% loadarticletags article %}
{% comment %}<div class="blog-post">
<h2 class="blog-post-title">Another blog post</h2>
<p class="blog-post-meta">December 23, 2013 by <a href="#">Jacob</a></p>

@ -0,0 +1,14 @@
<div class="panel panel-default">
<div class="panel-heading">标签</div>
<div class="panel-body">
{% for url,count,tag,color in article_tags_list %}
<a class="label label-{{ color }}" style="display: inline-block;" href="{{ url }}" title="{{ tag.name }}">
{{ tag.name }}
<span class="badge">{{ count }}</span>
</a>
{% endfor %}
</div>
</div>

@ -3,6 +3,15 @@
{% block content %}
<div class="row">
{% if page_description %}
<div class="col-sm-8 blog-main">
<div class="panel panel-default">
<div class="panel-body">
{{ page_description }}
</div>
</div>
</div>
{% endif %}
<div class="col-sm-8 blog-main">
Loading…
Cancel
Save