diff --git a/.gitignore b/.gitignore index c83ca89..f6d5bcc 100644 --- a/.gitignore +++ b/.gitignore @@ -69,4 +69,5 @@ migrations/ collectedstatic/ DjangoBlog/whoosh_index/ google93fd32dbd906620a.html -baidu_verify_FlHL7cUyC9.html \ No newline at end of file +baidu_verify_FlHL7cUyC9.html +BingSiteAuth.xml \ No newline at end of file diff --git a/DjangoBlog/feeds.py b/DjangoBlog/feeds.py index 2dee3cf..bef50d5 100644 --- a/DjangoBlog/feeds.py +++ b/DjangoBlog/feeds.py @@ -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 diff --git a/DjangoBlog/settings.py b/DjangoBlog/settings.py index 261fe2c..2ff980e 100644 --- a/DjangoBlog/settings.py +++ b/DjangoBlog/settings.py @@ -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 \ No newline at end of file +SITE_ID = 2 +BAIDU_NOTIFY_URL = "http://data.zz.baidu.com/urls?site=https://www.lylinux.net&token=1uAOGrMsUm5syDGn&type=original" diff --git a/DjangoBlog/sitemap.py b/DjangoBlog/sitemap.py index ae7d3db..6c712e8 100644 --- a/DjangoBlog/sitemap.py +++ b/DjangoBlog/sitemap.py @@ -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' diff --git a/DjangoBlog/spider_notify.py b/DjangoBlog/spider_notify.py new file mode 100644 index 0000000..63f24d7 --- /dev/null +++ b/DjangoBlog/spider_notify.py @@ -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() diff --git a/DjangoBlog/urls.py b/DjangoBlog/urls.py index 70e2024..41349e0 100644 --- a/DjangoBlog/urls.py +++ b/DjangoBlog/urls.py @@ -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'), ] diff --git a/blog/context_processors.py b/blog/context_processors.py index bba9ac4..d7171ee 100644 --- a/blog/context_processors.py +++ b/blog/context_processors.py @@ -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') } diff --git a/blog/models.py b/blog/models.py index 4ad7d6d..6e4c344 100644 --- a/blog/models.py +++ b/blog/models.py @@ -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): """友情链接""" diff --git a/blog/urls.py b/blog/urls.py index aa1a082..0df4561 100644 --- a/blog/urls.py +++ b/blog/urls.py @@ -33,4 +33,5 @@ urlpatterns = [ url(r'^author/(?P\w+).html$', views.AuthorDetailView.as_view(), name='author_detail'), url(r'^tag/(?P.+).html$', views.TagDetailView.as_view(), name='tag_detail'), url(r'^upload', views.fileupload, name='upload'), + url(r'^refresh', views.refresh_memcache, name='refresh') ] diff --git a/blog/views.py b/blog/views.py index 07276d3..2c670a1 100644 --- a/blog/views.py +++ b/blog/views.py @@ -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 diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..084cd33 --- /dev/null +++ b/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: /admin/ diff --git a/templates/blog/article_index.html b/templates/blog/article_index.html index 1683667..0161f26 100644 --- a/templates/blog/article_index.html +++ b/templates/blog/article_index.html @@ -1,8 +1,14 @@ {% extends 'share_layout/base.html' %} {% load blog_tags %} {% block header %} - {{ SITE_NAME }} | {{ SITE_DESCRIPTION }} - + {% if tag_name %} + {{ tag_name }} | {{ SITE_DESCRIPTION }} + + {% else %} + {{ SITE_NAME }} | {{ SITE_DESCRIPTION }} + + {% endif %} + diff --git a/templates/share_layout/base.html b/templates/share_layout/base.html index 6f29e25..eb17866 100644 --- a/templates/share_layout/base.html +++ b/templates/share_layout/base.html @@ -50,7 +50,7 @@

{{ SITE_NAME }}

-

大巧无工,重剑无锋

+

{{ SITE_DESCRIPTION }}

diff --git a/templates/share_layout/footer.html b/templates/share_layout/footer.html index c74e394..98a3e95 100644 --- a/templates/share_layout/footer.html +++ b/templates/share_layout/footer.html @@ -3,12 +3,12 @@ Copyright© 2017  逝去日子的博客  |  - + SiteMap  |  - - Rss Feed + + RSS Feed |  Hosting On  Linode