返回顶部
扩大
缩小

Zhang_derek

Django+Bootstrap+Mysql 搭建个人博客(四)

4.1.博客分类

(1)blog_tags.py

@register.simple_tag
def get_categories():
    return Category.objects.all()

@register.simple_tag
def get_entry_count_of_category(category_name):
    return Entry.objects.filter(category__name=category_name).count()

(2)right_side_bar.html

复制代码
 <div class="row">
    <div class="widget">
        <h3>分类:</h3>
        {% get_categories as category_list %}
        <ul class="list-group">
        {% for category in category_list %}
            <li class="list-group-item">
                <a href="{% url 'blog:blog_category' category.id %}">{{ category.name }}</a>
                <span class="badge">{% get_entry_count_of_category category.name %}</span>
            </li>
        {% endfor %}
        </ul>
    </div>
</div>
复制代码

 

4.2.博客归档

(1)urls.py

url(r'^archives/(?P<year>[0-9]+)/(?P<month>[0-9]+)$', views.archives, name='blog_archives'),

(2)views.py

def archives(request, year, month):
    entries = models.Entry.objects.filter(created_time__year=year, created_time__month=month)
    page = request.GET.get('page', 1)
    entry_list, paginator = make_paginator(entries, page)
    page_data = pagination_data(paginator, page)
    return render(request, 'blog/index.html', locals())

(3)blog_tags.py

@register.simple_tag
def archives():
    return Entry.objects.dates('created_time', 'month', order='DESC')

@register.simple_tag
def get_entry_count_of_date(year, month):
    return Entry.objects.filter(created_time__year=year, created_time__month=month).count()

(4)right_side_bar.html

复制代码
<div class="row">
    <div class="widget">
        <h3>归档:</h3>
        {% archives as date_list %}
        <ul class="list-group">
        {% for date in date_list %}
            <li class="list-group-item">
                <a href="{% url 'blog:blog_archives' date.year date.month %}">
                    <i class="glyphicon glyphicon-chevron-right"></i>
                    {{ date.year }} 年 {{ date.month }} 月
                    <span class="badge">{% get_entry_count_of_date date.year date.month %}</span>
                </a>

            </li>
        {% endfor %}
        </ul>
    </div>
</div>
复制代码

 

4.3.标签云

(1)blog_tags.py

@register.simple_tag
def get_tags():
    return Tag.objects.all()

(2)right_side_bar.html

复制代码
<div class="row">
    <div class="widget" >
        <h3>标签云:</h3>
        {% get_tags as tag_list %}
        {% for tag in tag_list %}
                <a href="{% url 'blog:blog_tag' tag.id %}" style="font-size: 20px;">
                    <span style="padding: 5px;" class="label {% cycle 'label-default' 'label-primary' 'label-success' 'label-info' 'label-warning' 'label-danger' %}">{{ tag.name }}</span>
                </a>&nbsp;
        {% endfor %}
    </div>
</div>
复制代码

 

 

4.4.RSS订阅

(1)blog/feed.py

复制代码
from django.contrib.syndication.views import Feed
# from django.urls import reverse
from .models import Entry


class LatestEntriesFeed(Feed):
    title = "Zhang_derek的博客"
    link = "/siteblogs/"
    description = "zhang_derek的最新博客文章!"

    def items(self):
        return Entry.objects.order_by('-created_time')[:5]

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

    def item_description(self, item):
        return item.abstract
复制代码

(2)website/urls.py

from blog.feed import LatestEntriesFeed


url(r'^latest/feed/$', LatestEntriesFeed()),    #RSS订阅

(3)right_side_bar.html

<div class="row">
    <div class="rss">
        <a href="/latest/feed/"><i class="glyphicon glyphicon-plus"></i>RSS 订阅</a>
    </div>
</div>

 

posted on   zhang_derek  阅读(3178)  评论(1编辑  收藏  举报

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示

目录导航