You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
#gq:
# 导入Django博客系统的插件基类, 所有自定义插件需继承此类以实现标准化接口
from djangoblog . plugin_manage . base_plugin import BasePlugin
# 导入插件钩子管理模块,用于将插件功能绑定到系统预设的钩子点
from djangoblog . plugin_manage import hooks
# 定义文章浏览次数统计插件类, 继承自插件基类BasePlugin
class ViewCountPlugin ( BasePlugin ) :
# 插件名称:在插件管理界面展示,用于区分不同插件
PLUGIN_NAME = ' 文章浏览次数统计 '
# 插件功能描述:说明插件的核心作用,方便管理员理解用途
PLUGIN_DESCRIPTION = ' 统计文章的浏览次数 '
# 插件版本号:用于版本管理,便于后续更新和兼容性判断
PLUGIN_VERSION = ' 0.1.0 '
# 插件作者信息:标注开发者,便于维护和沟通
PLUGIN_AUTHOR = ' liangliangyy '
def register_hooks ( self ) :
"""
注册插件钩子:将统计逻辑绑定到系统的特定触发点
作用:告诉插件系统“在哪个时机执行当前插件的功能”
"""
# 绑定规则:
# 1. 'after_article_body_get' 是系统预设的钩子名称,代表“文章内容获取完成后”的时机
# 2. self.record_view 是当前插件的核心方法,即钩子触发时要执行的逻辑
# 场景:当用户访问文章详情页,系统成功获取文章内容后,自动触发浏览次数统计
hooks . register ( ' after_article_body_get ' , self . record_view )
def record_view ( self , article , * args , * * kwargs ) :
"""
核心统计方法:执行文章浏览次数的记录操作
参数说明:
article: 钩子传递的文章对象( 即当前被访问的文章) , 必须是Article模型实例
*args, **kwargs: 预留参数, 用于接收钩子传递的额外信息( 如请求对象等) , 保证扩展性
"""
# 调用文章对象的viewed()方法:
# 该方法应由Article模型预先实现( 通常逻辑为“将view_count字段+1并保存到数据库”)
# 插件通过调用模型方法实现统计,解耦插件与数据模型的直接操作,符合设计规范
article . viewed ( )
# 实例化插件类:
# 插件系统会扫描并加载该实例,使上述注册的钩子和功能生效
plugin = ViewCountPlugin ( )