给context_processors.py中的seo_processor函数添加详细注释

pull/3/head
djq 4 months ago
parent 953d7fe375
commit 38f8915470

@ -1,43 +1,88 @@
# 导入日志模块,用于记录系统运行时的信息和错误
import logging
# 导入Django的时间工具用于获取当前时间
from django.utils import timezone
# 导入自定义工具:缓存工具和获取博客设置的方法
from djangoblog.utils import cache, get_blog_setting
# 导入当前应用的模型:分类和文章模型
from .models import Category, Article
# 创建日志记录器,用于记录当前模块的日志信息
logger = logging.getLogger(__name__)
def seo_processor(requests):
"""
自定义上下文处理器用于在所有模板中全局共享SEO相关的配置和数据
上下文处理器会在每次请求时被调用返回的字典会自动注入到所有模板中
Args:
requests: HttpRequest对象包含当前请求的信息如协议主机等
Returns:
dict: 包含网站配置导航数据等的字典供模板全局使用
"""
# 定义缓存键,用于标识当前处理器的缓存数据
key = 'seo_processor'
# 尝试从缓存中获取数据,减少数据库查询和计算开销
value = cache.get(key)
# 如果缓存中存在数据,直接返回缓存内容
if value:
return value
else:
# 缓存未命中时,记录日志并重新计算数据
logger.info('set processor cache.')
# 获取博客的全局设置(从数据库或其他配置源)
setting = get_blog_setting()
# 构建需要返回给模板的数据集
value = {
# 网站名称(用于页面标题等)
'SITE_NAME': setting.site_name,
# 是否显示谷歌广告
'SHOW_GOOGLE_ADSENSE': setting.show_google_adsense,
# 谷歌广告代码
'GOOGLE_ADSENSE_CODES': setting.google_adsense_codes,
# 网站SEO描述用于meta标签
'SITE_SEO_DESCRIPTION': setting.site_seo_description,
# 网站描述(用于页面展示)
'SITE_DESCRIPTION': setting.site_description,
# 网站关键词用于meta标签提升SEO
'SITE_KEYWORDS': setting.site_keywords,
# 网站基础URL协议+域名如https://example.com/
'SITE_BASE_URL': requests.scheme + '://' + requests.get_host() + '/',
# 文章摘要长度(用于列表页显示)
'ARTICLE_SUB_LENGTH': setting.article_sub_length,
# 导航栏显示的分类列表(从数据库查询所有分类)
'nav_category_list': Category.objects.all(),
# 导航栏显示的页面列表(筛选类型为"页面"且状态为"已发布"的文章)
'nav_pages': Article.objects.filter(
type='p',
status='p'),
type='p', # 'p'表示页面page区别于普通文章article
status='p'), # 'p'表示已发布published
# 是否开启网站评论功能
'OPEN_SITE_COMMENT': setting.open_site_comment,
# 网站备案号
'BEIAN_CODE': setting.beian_code,
# 网站统计代码如百度统计、Google Analytics
'ANALYTICS_CODE': setting.analytics_code,
# 公安备案号
"BEIAN_CODE_GONGAN": setting.gongan_beiancode,
# 是否显示公安备案号
"SHOW_GONGAN_CODE": setting.show_gongan_code,
# 当前年份(用于页脚版权信息等)
"CURRENT_YEAR": timezone.now().year,
# 全局页头代码如自定义CSS、JS
"GLOBAL_HEADER": setting.global_header,
# 全局页脚代码
"GLOBAL_FOOTER": setting.global_footer,
# 评论是否需要审核后才显示
"COMMENT_NEED_REVIEW": setting.comment_need_review,
}
# 将数据存入缓存有效期为10小时60秒*60分*10小时
# 减少重复计算和数据库查询,提升性能
cache.set(key, value, 60 * 60 * 10)
return value
return value
Loading…
Cancel
Save