ly_第五周注释

pull/11/head
LY 4 months ago
parent 0e04c36fc7
commit ab34dfd6d7

@ -0,0 +1,83 @@
# 导入必要的模块和类
from django.contrib.auth import get_user_model # 用于获取自定义用户模型
from django.contrib.syndication.views import Feed # Django内置的Feed基类用于生成RSS/Atom订阅
from django.utils import timezone # 处理时间相关操作
from django.utils.feedgenerator import Rss201rev2Feed # RSS 2.0版本的生成器
from blog.models import Article # 导入博客文章模型
from djangoblog.utils import CommonMarkdown # 导入Markdown处理工具用于将文章内容转换为HTML
class DjangoBlogFeed(Feed):
"""
自定义博客RSS订阅Feed类继承自Django的Feed基类用于生成博客文章的RSS订阅源
"""
# 指定Feed类型为RSS 2.0版本符合Rss201rev2Feed规范
feed_type = Rss201rev2Feed
# RSS源的描述信息会显示在订阅源的描述中
description = '大巧无工,重剑无锋.'
# RSS源的标题订阅源的名称
title = "且听风吟 大巧无工,重剑无锋. "
# RSS源的链接通常指向网站的订阅页面
link = "/feed/"
def author_name(self):
"""
定义订阅源的作者名称
这里取系统中第一个用户的昵称作为作者名
"""
return get_user_model().objects.first().nickname
def author_link(self):
"""
定义订阅源作者的链接
这里取系统中第一个用户的个人主页链接需用户模型实现get_absolute_url方法
"""
return get_user_model().objects.first().get_absolute_url()
def items(self):
"""
定义订阅源包含的项目即文章列表
返回条件类型为'article'type='a'状态为'已发布'status='p'的文章
排序方式按发布时间倒序最新发布的在前
数量限制最多返回5篇文章
"""
return Article.objects.filter(type='a', status='p').order_by('-pub_time')[:5]
def item_title(self, item):
"""
定义单个项目文章的标题
参数item从items()方法返回的单个Article对象
返回文章的标题
"""
return item.title
def item_description(self, item):
"""
定义单个项目文章的描述内容
使用CommonMarkdown工具将文章的Markdown格式正文转换为HTML作为订阅中的描述
"""
return CommonMarkdown.get_markdown(item.body)
def feed_copyright(self):
"""
定义订阅源的版权信息
格式为"Copyright© 年份 且听风吟"年份自动获取当前时间的年份
"""
now = timezone.now()
return "Copyright© {year} 且听风吟".format(year=now.year)
def item_link(self, item):
"""
定义单个项目文章的链接
返回文章的绝对URL需Article模型实现get_absolute_url方法
"""
return item.get_absolute_url()
def item_guid(self, item):
"""
定义单个项目的全局唯一标识符GUID
此处未实现具体逻辑可根据需求补充如返回文章ID或唯一URL等
"""
return
Loading…
Cancel
Save