sitemap和feed及其他部分优化

车亮亮 9 years ago
parent 048713eaeb
commit b504766519

3
.gitignore vendored

@ -69,4 +69,5 @@ migrations/
collectedstatic/
DjangoBlog/whoosh_index/
google93fd32dbd906620a.html
baidu_verify_FlHL7cUyC9.html
baidu_verify_FlHL7cUyC9.html
BingSiteAuth.xml

@ -16,20 +16,43 @@
from django.contrib.syndication.views import Feed
from blog.models import Article
from django.conf import settings
from django.utils.feedgenerator import Rss201rev2Feed
from DjangoBlog.common_markdown import common_markdown
from django.utils.safestring import mark_safe
from django.contrib.auth import get_user_model
from django.contrib.auth.models import User
from django.contrib.sites.models import Site
class DjangoBlogFeed(Feed):
feed_type = Rss201rev2Feed
description = settings.SITE_DESCRIPTION
feed_url = 'https://www.lylinux.net/feed'
title = "%s %s " % (settings.SITE_NAME, settings.SITE_DESCRIPTION)
link = "/feed"
link = "https://www.lylinux.net"
def author_name(self):
return get_user_model().objects.first().nickname
def author_link(self):
return get_user_model().objects.first().get_absolute_url()
def items(self):
return Article.objects.order_by('-pub_time')[:5]
return Article.objects.order_by('-pk')[:5]
def item_title(self, item):
return item.title
def item_description(self, item):
return item.body
return mark_safe(common_markdown.get_markdown(item.body))
def feed_copyright(self):
# print(Site.objects.get_current().name)
return "Copyright© 2017 " + settings.SITE_NAME
def item_link(self, item):
return item.get_absolute_url()
def item_guid(self, item):
return

@ -153,7 +153,7 @@ LOGIN_URL = '/login/'
TIME_FORMAT = '%Y-%m-%d %H:%M:%S'
DATE_TIME_FORMAT = '%Y-%m-%d'
SITE_NAME = 'Django Blog'
SITE_NAME = '且听风吟'
SITE_URL = 'http://blog.lylinux.org'
SITE_DESCRIPTION = '大巧无工,重剑无锋.'
SITE_SEO_DESCRIPTION = '小站主要用来分享和记录学习经验,教程,记录个人生活的点滴以及一些随笔.欢迎大家访问小站'
@ -179,14 +179,14 @@ CACHE_CONTROL_MAX_AGE = 2592000
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '192.168.21.130:11211',
'LOCATION': '127.0.0.1:11211',
},
'localmem': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
'LOCATION': 'unique-snowflake',
}
}
CACHE_MIDDLEWARE_SECONDS = 360000
CACHE_MIDDLEWARE_SECONDS = 60 * 60 * 10
CACHE_MIDDLEWARE_KEY_PREFIX = "djangoblog"
CACHE_MIDDLEWARE_ALIAS = 'default'
OAHUTH = {
@ -197,4 +197,5 @@ OAHUTH = {
}
}
SITE_ID = 2
SITE_ID = 2
BAIDU_NOTIFY_URL = "http://data.zz.baidu.com/urls?site=https://www.lylinux.net&token=1uAOGrMsUm5syDGn&type=original"

@ -19,7 +19,6 @@ from accounts.models import BlogUser
from django.contrib.sitemaps import GenericSitemap
from django.core.urlresolvers import reverse
class StaticViewSitemap(Sitemap):
priority = 0.5
changefreq = 'daily'

@ -0,0 +1,36 @@
#!/usr/bin/env python
# encoding: utf-8
"""
@version: ??
@author: liangliangyy
@license: MIT Licence
@contact: liangliangyy@gmail.com
@site: https://www.lylinux.org/
@software: PyCharm
@file: spider_notify.py
@time: 2017/1/15 下午1:41
"""
from django.contrib.sitemaps import ping_google
import requests
from django.conf import settings
class sipder_notify():
def __baidu_notify(self, url):
try:
result = requests.post(settings.BAIDU_NOTIFY_URL, data=url)
print(result.text)
except Exception as e:
print(e)
def __google_notify(self):
try:
ping_google('/sitemap.xml')
except Exception as e:
print(e)
def notify(self, url):
self.__baidu_notify(url)
self.__google_notify()

@ -18,6 +18,8 @@ from django.contrib import admin
from django.contrib.sitemaps.views import sitemap
from DjangoBlog.sitemap import StaticViewSitemap, ArticleSiteMap, CategorySiteMap, TagSiteMap, UserSiteMap
from DjangoBlog.feeds import DjangoBlogFeed
from django.views.decorators.cache import cache_page
from django.conf import settings
sitemaps = {
@ -35,8 +37,9 @@ urlpatterns = [
url(r'', include('comments.urls', namespace='comment', app_name='comments')),
url(r'', include('accounts.urls', namespace='account', app_name='accounts')),
url(r'', include('oauth.urls', namespace='oauth', app_name='oauth')),
url(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps},
url(r'^sitemap\.xml$', cache_page(60 * 60 * 10)(sitemap), {'sitemaps': sitemaps},
name='django.contrib.sitemaps.views.sitemap'),
url(r'^feed/$', DjangoBlogFeed()),
url(r'^search', include('haystack.urls'),name='search'),
url(r'^feed/$', cache_page(60 * 60 * 10)(DjangoBlogFeed())),
url(r'^search', include('haystack.urls'), name='search'),
]

@ -26,5 +26,5 @@ def seo_processor(requests):
'SITE_BASE_URL': 'http://' + requests.get_host() + '/',
'ARTICLE_SUB_LENGTH': settings.ARTICLE_SUB_LENGTH,
'nav_category_list': Category.objects.all(),
# 'nav_pages': BlogPage.objects.filter(status='p')
'nav_pages': Article.objects.filter(type='p', status='p')
}

@ -3,7 +3,7 @@ from django.core.urlresolvers import reverse
from django.conf import settings
# from django.template.defaultfilters import slugify
from uuslug import slugify
from DjangoBlog.spider_notify import sipder_notify
class Article(models.Model):
"""文章"""
@ -71,7 +71,11 @@ class Article(models.Model):
if not self.slug or self.slug == 'no-slug' or not self.id:
# Only set the slug when the object is created.
self.slug = slugify(self.title)
try:
notify = sipder_notify()
notify.notify(self.get_absolute_url())
except Exception as e:
print(e)
super().save(*args, **kwargs)
def viewed(self):
@ -158,7 +162,6 @@ class Category(models.Model):
last_mod_time = models.DateTimeField('修改时间', auto_now=True)
parent_category = models.ForeignKey('self', verbose_name="父级分类", blank=True, null=True)
class Meta:
ordering = ['name']
verbose_name = "分类"
@ -170,6 +173,14 @@ class Category(models.Model):
def __str__(self):
return self.name
def save(self, *args, **kwargs):
try:
notify = sipder_notify()
notify.notify(self.get_absolute_url())
except Exception as e:
print(e)
super().save(*args, **kwargs)
class Tag(models.Model):
"""文章标签"""
@ -177,7 +188,6 @@ class Tag(models.Model):
created_time = models.DateTimeField('创建时间', auto_now_add=True)
last_mod_time = models.DateTimeField('修改时间', auto_now=True)
def __str__(self):
return self.name
@ -192,6 +202,14 @@ class Tag(models.Model):
verbose_name = "标签"
verbose_name_plural = verbose_name
def save(self, *args, **kwargs):
try:
notify = sipder_notify()
notify.notify(self.get_absolute_url())
except Exception as e:
print(e)
super().save(*args, **kwargs)
class Links(models.Model):
"""友情链接"""

@ -33,4 +33,5 @@ urlpatterns = [
url(r'^author/(?P<author_name>\w+).html$', views.AuthorDetailView.as_view(), name='author_detail'),
url(r'^tag/(?P<tag_name>.+).html$', views.TagDetailView.as_view(), name='tag_detail'),
url(r'^upload', views.fileupload, name='upload'),
url(r'^refresh', views.refresh_memcache, name='refresh')
]

@ -20,6 +20,7 @@ from blog.forms import BlogSearchForm
import datetime
from django.views.decorators.csrf import csrf_exempt
import os
from django.contrib.auth.decorators import login_required
"""
class SeoProcessor():
@ -224,6 +225,15 @@ def fileupload(request):
return HttpResponse("only for post")
@login_required
def refresh_memcache(request):
try:
result = os.popen(' service memcache restart ').readline()
return HttpResponse(result)
except Exception as e:
return HttpResponse(e);
"""
class BlogSearchView(SearchView):
form_class = BlogSearchForm

@ -0,0 +1,2 @@
User-agent: *
Disallow: /admin/

@ -1,8 +1,14 @@
{% extends 'share_layout/base.html' %}
{% load blog_tags %}
{% block header %}
<title>{{ SITE_NAME }} | {{ SITE_DESCRIPTION }}</title>
<meta name="description" content="{{ SITE_SEO_DESCRIPTION }}"/>
{% if tag_name %}
<title>{{ tag_name }} | {{ SITE_DESCRIPTION }}</title>
<meta name="description" content="{{ page_type }}:{{ tag_name }}"/>
{% else %}
<title>{{ SITE_NAME }} | {{ SITE_DESCRIPTION }}</title>
<meta name="description" content="{{ SITE_SEO_DESCRIPTION }}"/>
{% endif %}
<meta name="keywords" content="{{ SITE_KEYWORDS }}"/>
<meta property="og:type" content="blog"/>
<meta property="og:title" content="{{ SITE_NAME }}"/>

@ -50,7 +50,7 @@
<hgroup>
<h1 class="site-title"><a href="{{ SITE_BASE_URL }}" title="{{ SITE_NAME }}" rel="home">{{ SITE_NAME }}</a>
</h1>
<h2 class="site-description">大巧无工,重剑无锋</h2>
<h2 class="site-description">{{ SITE_DESCRIPTION }}</h2>
</hgroup>

@ -3,12 +3,12 @@
Copyright&copy;&nbsp;2017&nbsp;
<a href="{{ SITE_BASE_URL }}" target="blank">逝去日子的博客</a>
&nbsp;|&nbsp;
<a href="{{ SITE_BASE_URL }}sitemap.xml" title="SiteMap">
<a href="{{ SITE_BASE_URL }}sitemap.xml" title="SiteMap" target="_blank">
SiteMap
</a>
&nbsp;|&nbsp;
<a href="{{ SITE_BASE_URL }}feed" title="Rss Feed">
Rss Feed
<a href="{{ SITE_BASE_URL }}feed" title="RSS Feed" target="_blank">
RSS Feed
</a>
|&nbsp; Hosting On&nbsp;
<a href="https://www.linode.com/?r=b0d38794d05ef8816b357a929106e89b7c6452f9" target="blank" rel="nofollow">Linode</a>

Loading…
Cancel
Save