Skip to content

Commit 4aa9052

Browse files
committed
完善seo功能,完善feed功能
1 parent 65093cf commit 4aa9052

File tree

13 files changed

+139
-25
lines changed

13 files changed

+139
-25
lines changed

DjangoBlog/feeds.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#!/usr/bin/env python
2+
# encoding: utf-8
3+
4+
5+
"""
6+
@version: ??
7+
@author: liangliangyy
8+
@license: MIT Licence
9+
@contact: liangliangyy@gmail.com
10+
@site: https://www.lylinux.org/
11+
@software: PyCharm
12+
@file: feed.py
13+
@time: 2016/12/22 下午10:16
14+
"""
15+
16+
from django.contrib.syndication.views import Feed
17+
from blog.models import Article
18+
from django.conf import settings
19+
20+
21+
class DjangoBlogFeed(Feed):
22+
title = "%s %s " % (settings.SITE_NAME, settings.SITE_DESCRIPTION)
23+
link = "/feed"
24+
25+
def items(self):
26+
return Article.objects.order_by('-pub_time')[:5]
27+
28+
def item_title(self, item):
29+
return item.title
30+
31+
def item_description(self, item):
32+
return item.body
33+
34+
def item_link(self, item):
35+
return item.get_absolute_url()

DjangoBlog/settings.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,8 @@
143143

144144
SITE_NAME = 'Django Blog'
145145
SITE_DESCRIPTION = '大巧无工,重剑无锋.'
146+
SITE_SEO_DESCRIPTION = '小站主要用来分享和记录学习经验,教程,记录个人生活的点滴以及一些随笔.欢迎大家访问小站'
147+
146148
ARTICLE_SUB_LENGTH = 300
147149

148150
# bootstrap颜色样式

DjangoBlog/urls.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
from django.contrib import admin
1818
from django.contrib.sitemaps.views import sitemap
1919
from DjangoBlog.sitemap import StaticViewSitemap, ArticleSiteMap, CategorySiteMap, TagSiteMap, UserSiteMap
20+
from DjangoBlog.feeds import DjangoBlogFeed
2021

2122
sitemaps = {
2223

@@ -35,5 +36,6 @@
3536
url(r'', include('accounts.urls', namespace='account', app_name='accounts')),
3637
url(r'', include('oauth.urls', namespace='oauth', app_name='oauth')),
3738
url(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps},
38-
name='django.contrib.sitemaps.views.sitemap')
39+
name='django.contrib.sitemaps.views.sitemap'),
40+
url(r'^feed/$', DjangoBlogFeed())
3941
]

blog/admin.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from django.contrib import admin
22

33
# Register your models here.
4-
from .models import Article, Category, Tag, Links, BlogPage
4+
from .models import Article, Category, Tag, Links
55
from pagedown.widgets import AdminPagedownWidget
66
from django import forms
77

@@ -19,7 +19,7 @@ class ArticlelAdmin(admin.ModelAdmin):
1919

2020

2121
admin.site.register(Article, ArticlelAdmin)
22-
admin.site.register(BlogPage, ArticlelAdmin)
22+
#admin.site.register(BlogPage, ArticlelAdmin)
2323
admin.site.register(Category)
2424
admin.site.register(Tag)
2525
admin.site.register(Links)

blog/context_processors.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,10 @@
1919
def seo_processor(requests):
2020
return {
2121
'SITE_NAME': settings.SITE_NAME,
22+
'SITE_SEO_DESCRIPTION': settings.SITE_SEO_DESCRIPTION,
2223
'SITE_DESCRIPTION': settings.SITE_DESCRIPTION,
2324
'SITE_BASE_URL': 'http://' + requests.get_host() + '/',
2425
'ARTICLE_SUB_LENGTH': settings.ARTICLE_SUB_LENGTH,
25-
'nav_category_list': Category.objects.all()
26+
'nav_category_list': Category.objects.all(),
27+
# 'nav_pages': BlogPage.objects.filter(status='p')
2628
}

blog/models.py

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,24 @@ class Article(models.Model):
1515
('o', '打开'),
1616
('c', '关闭'),
1717
)
18+
TYPE = (
19+
('a', '文章'),
20+
('p', '页面'),
21+
)
1822
title = models.CharField('标题', max_length=200)
1923
body = models.TextField('正文')
2024
created_time = models.DateTimeField('创建时间', auto_now_add=True)
2125
last_mod_time = models.DateTimeField('修改时间', auto_now=True)
2226
pub_time = models.DateTimeField('发布时间', blank=True, null=True,
2327
help_text="不指定发布时间则视为草稿,可以指定未来时间,到时将自动发布。")
24-
status = models.CharField('文章状态', max_length=1, choices=STATUS_CHOICES, default='o')
25-
comment_status = models.CharField('评论状态', max_length=1, choices=COMMENT_STATUS)
26-
# summary = models.CharField('摘要', max_length=200, blank=True, help_text="可选,若为空将摘取正文的前300个字符。")
28+
status = models.CharField('文章状态', max_length=1, choices=STATUS_CHOICES, default='p')
29+
comment_status = models.CharField('评论状态', max_length=1, choices=COMMENT_STATUS, default='o')
30+
type = models.CharField('类型', max_length=1, choices=TYPE, default='a')
2731
views = models.PositiveIntegerField('浏览量', default=0)
2832
author = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name='作者', on_delete=models.CASCADE)
2933

30-
category = models.ForeignKey('Category', verbose_name='分类', on_delete=models.CASCADE)
31-
tags = models.ManyToManyField('Tag', verbose_name='标签集合', blank=True)
34+
category = models.ForeignKey('Category', verbose_name='分类', on_delete=models.CASCADE, blank=True, null=True)
35+
tags = models.ManyToManyField('Tag', verbose_name='标签集合', blank=True, null=True)
3236

3337
slug = models.SlugField(default='no-slug', max_length=60, blank=True)
3438
wordpress_id = models.IntegerField()
@@ -80,6 +84,7 @@ def comment_list(self):
8084
parent_comments = comments.filter(parent_comment=None)
8185

8286

87+
'''
8388
class BlogPage(models.Model):
8489
"""文章"""
8590
STATUS_CHOICES = (
@@ -113,7 +118,6 @@ def __str__(self):
113118
return self.title
114119
115120
def get_absolute_url(self):
116-
117121
return reverse('blog:pagedetail', kwargs=
118122
{
119123
'page_id': self.id,
@@ -139,6 +143,10 @@ def comment_list(self):
139143
comments = self.comment_set.all()
140144
parent_comments = comments.filter(parent_comment=None)
141145
146+
def get_category_tree(self):
147+
return []
148+
'''
149+
142150

143151
class Category(models.Model):
144152
"""文章分类"""

blog/urls.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@
2222
url(r'^$', views.IndexView.as_view(), name='index'),
2323
# url(r'^article/(?P<article_id>\d+)$', views.ArticleDetailView.as_view(), name='detail'),
2424
url(r'^page/(?P<page>\d+)$', views.IndexView.as_view(), name='index_page'),
25-
url(r'(?P<year>\d+)/(?P<month>\d+)/(?P<day>\d+)/(?P<article_id>\d+)-(?P<slug>\S+).html$',
25+
url(r'^article/(?P<year>\d+)/(?P<month>\d+)/(?P<day>\d+)/(?P<article_id>\d+)-(?P<slug>\S+).html$',
2626
views.ArticleDetailView.as_view(),
2727
name='detail'),
28-
url(r'(?P<year>\d+)/(?P<month>\d+)/(?P<day>\d+)/(?P<page_id>\d+)-(?P<slug>\S+).html$',
28+
url(r'^blogpage/(?P<year>\d+)/(?P<month>\d+)/(?P<day>\d+)/(?P<page_id>\d+)-(?P<slug>\S+).html$',
2929
views.ArticleDetailView.as_view(),
3030
name='pagedetail'),
3131
url(r'^category/(?P<category_name>\S+).html$', views.CategoryDetailView.as_view(), name='category_detail'),

blog/views.py

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,23 @@
1515
from blog.wordpress_helper import wordpress_helper
1616
from django import http
1717
from django.http import HttpResponse
18+
from abc import ABCMeta, abstractmethod
19+
20+
21+
class SeoProcessor():
22+
__metaclass__ = ABCMeta
23+
24+
@abstractmethod
25+
def get_title(self):
26+
pass
27+
28+
@abstractmethod
29+
def get_keywords(self):
30+
pass
31+
32+
@abstractmethod
33+
def get_description(self):
34+
pass
1835

1936

2037
class ArticleListView(ListView):
@@ -30,7 +47,11 @@ class ArticleListView(ListView):
3047
page_kwarg = 'page'
3148

3249

33-
class IndexView(ArticleListView):
50+
class IndexView(ArticleListView, SeoProcessor):
51+
def get_title(self):
52+
return '逝去日子的博客'
53+
def get_keywords(self):
54+
pass
3455
def get_queryset(self):
3556
article_list = Article.objects.filter(status='p')
3657

@@ -54,7 +75,7 @@ def get_object(self):
5475
return obj
5576

5677
def get_context_data(self, **kwargs):
57-
articleid = int(self.kwargs['article_id'])
78+
articleid = int(self.kwargs[self.pk_url_kwarg])
5879

5980
def get_article(id):
6081
try:
@@ -96,6 +117,20 @@ def post(self, request, *args, **kwargs):
96117
"""
97118

98119

120+
'''
121+
class PageDetailView(ArticleDetailView):
122+
model = BlogPage
123+
pk_url_kwarg = 'page_id'
124+
125+
def get_object(self):
126+
obj = super(PageDetailView, self).get_object()
127+
print(obj.title)
128+
obj.viewed()
129+
# obj.body = markdown2.markdown(obj.body)
130+
return obj
131+
'''
132+
133+
99134
class CategoryDetailView(ArticleListView):
100135
# template_name = 'index.html'
101136
# context_object_name = 'article_list'

templates/base.html

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,19 @@
1212
<head>
1313
<meta charset="UTF-8"/>
1414
<meta name="viewport" content="width=device-width"/>
15-
<title>逝去日子的博客 | 大巧无工,重剑无锋</title>
15+
{% block header %}
16+
{% endblock %}
1617
<link rel="profile" href="http://gmpg.org/xfn/11"/>
1718
<link rel="pingback" href="https://www.lylinux.org/xmlrpc.php"/>
1819
<!--[if lt IE 9]>
19-
<script src="{% static 'blog/js/html5.js' %}" type="text/javascript"></script>
20-
<![endif]-->
21-
<meta property="wb:webmaster" content="fdb053e76bf865f3"/>
20+
<script src="{% static 'blog/js/html5.js' %}" type="text/javascript"></script>
21+
<![endif]-->
2222

2323
<link rel='dns-prefetch' href='//fonts.googleapis.com'/>
2424
<link rel='dns-prefetch' href='//s.w.org'/>
25-
<link rel="alternate" type="application/rss+xml" title="逝去日子的博客 &raquo; Feed" href="https://www.lylinux.org/feed"/>
26-
<link rel="alternate" type="application/rss+xml" title="逝去日子的博客 &raquo; 评论Feed"
25+
<link rel="alternate" type="application/rss+xml" title="{{ SITE_NAME }} &raquo; Feed"
26+
href="{{ SITE_BASE_URL }}feed"/>
27+
<link rel="alternate" type="application/rss+xml" title="{{ SITE_NAME }} &raquo; 评论Feed"
2728
href="https://www.lylinux.org/comments/feed"/>
2829

2930

templates/blog/articledetail.html

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,20 @@
11
{% extends 'base.html' %}
22
{% load blog_tags %}
3-
3+
{% block header %}
4+
<title>{{ article.title }} | {{ SITE_DESCRIPTION }}</title>
5+
<meta property="og:type" content="article"/>
6+
<meta property="og:title" content="{{ article.title }}"/>
7+
<meta property="og:url"
8+
content="{{ article.get_absolute_url }}"/>
9+
<meta property="article:published_time" content="{% datetimeformat article.pub_time %}"/>
10+
<meta property="article:modified_time" content="{% datetimeformat article.pub_time %}"/>
11+
<meta property="article:author" content="{{ article.author.get_absolute_url }}"/>
12+
<meta property="article:section" content="{{ article.category.name }}"/>
13+
{% for t in article.tags.all %}
14+
<meta property="article:tag" content="{{ t.name }}"/>
15+
{% endfor %}
16+
<meta property="og:site_name" content="{{ SITE_NAME }}"/>
17+
{% endblock %}
418
{% block content %}
519
<div id="primary" class="site-content">
620
<div id="content" role="main">

0 commit comments

Comments
 (0)