一步一步利用django创建博客应用(四)

增加侧边栏的内容

为侧边栏添加最近发布的5篇博客

这里使用自定义标签实现


在blog应用目录下创建templatetags目录,目录下创建blog_tags文件


创建自定义标签

from django import template
register = template.Library()
from ..models import Post
@register.inclusion_tag('blog/post/latest_posts.html')
def show_latest_posts(count=5):
    latest_posts = Post.published.order_by('-publish')[:count]
    return {'latest_posts': latest_posts}


在blog模板目录中添加latest_posts.html

<ul>
    {% for post in latest_posts %}
    <li>
        <a href="{{ post.get_absolute_url }}">{{ post.title }}</a>
    </li>
    {% endfor %}
</ul>


在base模板中使用

顶部添加{% load blog_tags %}

侧边栏部分添加 

{% show_latest_posts %}


重启开发服务器可见侧边栏 显示最近发布的5片文章


为你的博客添加站点地图

django自带的站点地图 依赖于sites应用

所以首先在settings.py文件中 激活应用

'django.contrib.sites',

'django.contrib.sitemaps',


同步数据库表


在blog应用创建sitemap.py文件

from django.contrib.sitemaps import Sitemap
from .models import Post

class PostSitemap(Sitemap):
    changefreq = 'weekly'
    priority = 0.9
    def items(self):
        return Post.published.all()
    def lastmod(self, obj):
        return obj.publish


为站点地图添加url

from django.contrib.sitemaps.views import sitemap
from blog.sitemaps import PostSitemap
sitemaps = {
'posts': PostSitemap,
}
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^blog/',
include('blog.urls'namespace='blog', app_name='blog')),
url(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps},
name='django.contrib.sitemaps.views.sitemap'),
]


打开浏览器http:127.0.0.1:8000/sitemap.xml查看

一步一步利用django创建博客应用(四)_第1张图片



为博客创建feeds

创建feeds.py文件

from django.contrib.syndication.views import Feed
from django.template.defaultfilters import truncatewords
from .models import Post

class LatestPostFeed(Feed):
    title = 'My blog'
    link = '/blog/'
    description = 'New posts of my blog.'

    def items(self):
        return Post.published.all()[:5]

    def item_title(self, item):
        return item.title

    def item_description(self, item):
        return truncatewords(item.body, 30)


修改blog的urls文件

url(r'^feed/$', LatestPostsFeed(), name='post_feed'),


在侧边栏添加feed的描述

编辑base.html

<p><a href="{% url "blog:post_feed" %}">Subscribe to my RSS feed</a></p>


第四天结束


你可能感兴趣的:(python,开发,django)