部分界面url修改,增加站点地图,增加页面,待完善

master
车亮亮 9 years ago
parent 4c81f08815
commit 0c0c3d1fbc

@ -35,6 +35,7 @@ INSTALLED_APPS = [
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sitemaps',
'pagedown',
'blog',
'accounts',
@ -60,8 +61,7 @@ ROOT_URLCONF = 'DjangoBlog.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')]
,
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [

@ -0,0 +1,75 @@
#!/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: sitemap.py
@time: 2016/12/15 下午10:26
"""
from django.contrib.sitemaps import Sitemap
from blog.models import Article, Category, Tag
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'
def items(self):
return ['blog:index', ]
def location(self, item):
return reverse(item)
class ArticleSiteMap(Sitemap):
changefreq = "monthly"
priority = "0.6"
def items(self):
return Article.objects.filter(status='p')
def lastmod(self, obj):
return obj.last_mod_time
class CategorySiteMap(Sitemap):
changefreq = "Weekly"
priority = "0.6"
def items(self):
return Category.objects.all()
def lastmod(self, obj):
return obj.last_mod_time
class TagSiteMap(Sitemap):
changefreq = "Weekly"
priority = "0.3"
def items(self):
return Tag.objects.all()
def lastmod(self, obj):
return obj.last_mod_time
class UserSiteMap(Sitemap):
changefreq = "Weekly"
priority = "0.3"
def items(self):
return BlogUser.objects.all()
def lastmod(self, obj):
return obj.date_joined

@ -15,6 +15,17 @@ Including another URLconf
"""
from django.conf.urls import url, include
from django.contrib import admin
from django.contrib.sitemaps.views import sitemap
from DjangoBlog.sitemap import StaticViewSitemap, ArticleSiteMap, CategorySiteMap, TagSiteMap, UserSiteMap
sitemaps = {
'blog': ArticleSiteMap,
'Category': CategorySiteMap,
'Tag': TagSiteMap,
'User': UserSiteMap,
'static': StaticViewSitemap
}
urlpatterns = [
url(r'^admin/', admin.site.urls),
@ -22,5 +33,7 @@ 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'', include('oauth.urls', namespace='oauth', app_name='oauth')),
url(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps},
name='django.contrib.sitemaps.views.sitemap')
]

@ -1,7 +1,7 @@
from django.contrib import admin
# Register your models here.
from .models import Article, Category, Tag, Links
from .models import Article, Category, Tag, Links, BlogPage
from pagedown.widgets import AdminPagedownWidget
from django import forms
@ -19,6 +19,7 @@ class ArticlelAdmin(admin.ModelAdmin):
admin.site.register(Article, ArticlelAdmin)
admin.site.register(BlogPage, ArticlelAdmin)
admin.site.register(Category)
admin.site.register(Tag)
admin.site.register(Links)

@ -31,6 +31,7 @@ class Article(models.Model):
tags = models.ManyToManyField('Tag', verbose_name='标签集合', blank=True)
slug = models.SlugField(default='no-slug', max_length=60, blank=True)
wordpress_id = models.IntegerField()
def __str__(self):
return self.title
@ -79,12 +80,73 @@ class Article(models.Model):
parent_comments = comments.filter(parent_comment=None)
class BlogPage(models.Model):
"""文章"""
STATUS_CHOICES = (
('d', '草稿'),
('p', '发表'),
)
COMMENT_STATUS = (
('o', '打开'),
('c', '关闭'),
)
title = models.CharField('标题', max_length=200)
body = models.TextField('正文')
created_time = models.DateTimeField('创建时间', auto_now_add=True)
last_mod_time = models.DateTimeField('修改时间', auto_now=True)
pub_time = models.DateTimeField('发布时间', blank=True, null=True,
help_text="不指定发布时间则视为草稿,可以指定未来时间,到时将自动发布。")
status = models.CharField('文章状态', max_length=1, choices=STATUS_CHOICES, default='o')
comment_status = models.CharField('评论状态', max_length=1, choices=COMMENT_STATUS)
# summary = models.CharField('摘要', max_length=200, blank=True, help_text="可选若为空将摘取正文的前300个字符。")
views = models.PositiveIntegerField('浏览量', default=0)
author = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name='作者', on_delete=models.CASCADE)
slug = models.SlugField(default='no-slug', max_length=60, blank=True)
class Meta:
ordering = ['-pub_time']
verbose_name = "页面"
verbose_name_plural = verbose_name
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('blog:pagedetail', kwargs=
{
'page_id': self.id,
'year': self.created_time.year,
'month': self.created_time.month,
'day': self.created_time.day,
'slug': self.slug
})
def save(self, *args, **kwargs):
# self.summary = self.summary or self.body[:settings.ARTICLE_SUB_LENGTH]
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)
super().save(*args, **kwargs)
def viewed(self):
self.views += 1
self.save(update_fields=['views'])
def comment_list(self):
comments = self.comment_set.all()
parent_comments = comments.filter(parent_comment=None)
class Category(models.Model):
"""文章分类"""
name = models.CharField('分类名', max_length=30)
created_time = models.DateTimeField('创建时间', auto_now_add=True)
last_mod_time = models.DateTimeField('修改时间', auto_now=True)
parent_category = models.ForeignKey('self', verbose_name="父级分类", blank=True, null=True)
wordpress_category_id = models.IntegerField()
class Meta:
ordering = ['name']
@ -103,6 +165,7 @@ class Tag(models.Model):
name = models.CharField('标签名', max_length=30)
created_time = models.DateTimeField('创建时间', auto_now_add=True)
last_mod_time = models.DateTimeField('修改时间', auto_now=True)
wordpress_tag_id = models.IntegerField()
def __str__(self):
return self.name

@ -25,8 +25,12 @@ urlpatterns = [
url(r'(?P<year>\d+)/(?P<month>\d+)/(?P<day>\d+)/(?P<article_id>\d+)-(?P<slug>\S+).html$',
views.ArticleDetailView.as_view(),
name='detail'),
url(r'^category/(?P<category_name>\S+)$', 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'),
url(r'(?P<year>\d+)/(?P<month>\d+)/(?P<day>\d+)/(?P<page_id>\d+)-(?P<slug>\S+).html$',
views.ArticleDetailView.as_view(),
name='pagedetail'),
url(r'^category/(?P<category_name>\S+).html$', views.CategoryDetailView.as_view(), name='category_detail'),
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'(?P<wordpress_slug>\w+).html$', views.handle_wordpress_post),
url(r'^test$', views.test)
]

@ -12,6 +12,9 @@ from django.core.exceptions import ObjectDoesNotExist
from comments.forms import CommentForm
from django.conf import settings
from django import forms
from blog.wordpress_helper import wordpress_helper
from django import http
from django.http import HttpResponse
class ArticleListView(ListView):
@ -102,12 +105,20 @@ class CategoryDetailView(ArticleListView):
def get_queryset(self):
categoryname = self.kwargs['category_name']
try:
categoryname = categoryname.split('/')[-1]
except:
pass
article_list = Article.objects.filter(category__name=categoryname, status='p')
return article_list
def get_context_data(self, **kwargs):
categoryname = self.kwargs['category_name']
try:
categoryname = categoryname.split('/')[-1]
except:
pass
kwargs['page_type'] = CategoryDetailView.page_type
kwargs['tag_name'] = categoryname
return super(CategoryDetailView, self).get_context_data(**kwargs)
@ -158,7 +169,28 @@ class TagDetailView(ArticleListView):
def test(requests):
post = Article.objects.all()
import re
for p in post:
# p.views += 1
#p.summary = p.body[:settings.ARTICLE_SUB_LENGTH]
p.body = re.sub('\[code lang="\w+"\]', "'''", p.body)
p.body = re.sub('\[/code\]', "'''", p.body)
p.save()
def handle_wordpress_post(request, wordpress_slug):
"""
wordpress文章301永久重定向
:param request:
:param wordpress_slug:
:return:
"""
helper = wordpress_helper()
postid = helper.get_postid_by_postname(wordpress_slug)
print(postid)
if postid != 0:
try:
article = Article.objects.get(wordpress_id=postid)
url = article.get_absolute_url()
return http.HttpResponsePermanentRedirect(url)
except ObjectDoesNotExist:
return HttpResponse(status=404)
return HttpResponse(status=404)

@ -32,7 +32,7 @@
type='text/css' media='all'/>
<link rel='stylesheet' id='twentytwelve-style-css' href='{% static 'blog/css/style.css' %}' type='text/css'
media='all'/>
{% comment %}<script src="https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js"></script>{% endcomment %}
<!--[if lt IE 9]>
<link rel='stylesheet' id='twentytwelve-ie-css' href='{% static 'blog/css/ie.css' %}' type='text/css' media='all' />
<![endif]-->
@ -65,7 +65,7 @@
</div><!-- #main .wrapper -->
{% include 'footer.html' %}
</div><!-- #page -->
{% comment %}
<div id="wp-auto-top">
<div id="wp-auto-top-top"></div>
<div id="wp-auto-top-bottom"></div>
@ -74,8 +74,8 @@
var wpAutoTopSpeed = 1;</script>
<div id="su-footer-links" style="text-align: center;"></div>
<script type="application/javascript" src="{% static 'blog/js/navigation.js' %}" defer="defer"></script>
{% endcomment %}
{% comment %}<script type="application/javascript" src="{% static 'blog/js/navigation.js' %}" defer="defer"></script>{% endcomment %}
<link href="{% static 'highlight/styles/github-gist.css' %}" rel="stylesheet">
<script type="application/javascript" src="{% static 'highlight/highlight.pack.js' %}"></script>
<script>hljs.initHighlightingOnLoad();</script>

@ -11,7 +11,7 @@
被贴了
{% for t in article.tags.all %}
<a href="#" rel="tag">{{ t.name }}</a>
<a href="{{ t.get_absolute_url }}" rel="tag">{{ t.name }}</a>
{% if t != article.tags.all.last %}
{% endif %}
@ -20,7 +20,7 @@
标签
{% endif %}
<span class="by-author">作者是<span class="author vcard"><a class="url fn n"
href="#"
href="{{ article.author.get_absolute_url }}"
title="查看所有由{{ article.author.username }}发布的文章"
rel="author">
{{ article.author.username }}

@ -3,11 +3,11 @@
Copyright&copy;&nbsp;2016&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">
SiteMap
</a>
&nbsp;|&nbsp;
<a href="{{ SITE_BASE_URL }}/sitemap.html" title="SiteMap">
<a href="{{ SITE_BASE_URL }}sitemap.xml" title="SiteMap">
Baidu SiteMap
</a>
|&nbsp; Hosting On&nbsp;

Loading…
Cancel
Save