|
|
# bjy: 导入日志模块
|
|
|
import logging
|
|
|
|
|
|
# bjy: 从Django中导入时区工具
|
|
|
from django.utils import timezone
|
|
|
|
|
|
# bjy: 从项目工具模块中导入缓存和获取博客设置的函数
|
|
|
from djangoblog.utils import cache, get_blog_setting
|
|
|
# bjy: 从当前应用的models中导入Category和Article模型
|
|
|
from .models import Category, Article
|
|
|
|
|
|
# bjy: 获取一个名为__name__的logger实例,用于记录日志
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
|
|
|
# bjy: 定义一个上下文处理器,用于在所有模板中注入全局变量
|
|
|
def seo_processor(requests):
|
|
|
# bjy: 定义一个缓存键名
|
|
|
key = 'seo_processor'
|
|
|
# bjy: 尝试从缓存中获取数据
|
|
|
value = cache.get(key)
|
|
|
# bjy: 如果缓存中存在数据,则直接返回
|
|
|
if value:
|
|
|
return value
|
|
|
else:
|
|
|
# bjy: 如果缓存中没有数据,则记录一条日志
|
|
|
logger.info('set processor cache.')
|
|
|
# bjy: 获取博客的设置对象
|
|
|
setting = get_blog_setting()
|
|
|
# bjy: 构建一个包含所有SEO和全局设置的字典
|
|
|
value = {
|
|
|
# bjy: 网站名称
|
|
|
'SITE_NAME': setting.site_name,
|
|
|
# bjy: 是否显示Google AdSense广告
|
|
|
'SHOW_GOOGLE_ADSENSE': setting.show_google_adsense,
|
|
|
# bjy: Google AdSense的广告代码
|
|
|
'GOOGLE_ADSENSE_CODES': setting.google_adsense_codes,
|
|
|
# bjy: 网站的SEO描述
|
|
|
'SITE_SEO_DESCRIPTION': setting.site_seo_description,
|
|
|
# bjy: 网站的普通描述
|
|
|
'SITE_DESCRIPTION': setting.site_description,
|
|
|
# bjy: 网站的关键词
|
|
|
'SITE_KEYWORDS': setting.site_keywords,
|
|
|
# bjy: 网站的完整基础URL(协议+域名)
|
|
|
'SITE_BASE_URL': requests.scheme + '://' + requests.get_host() + '/',
|
|
|
# bjy: 文章列表页的摘要长度
|
|
|
'ARTICLE_SUB_LENGTH': setting.article_sub_length,
|
|
|
# bjy: 用于导航栏的所有分类列表
|
|
|
'nav_category_list': Category.objects.all(),
|
|
|
# bjy: 用于导航栏的所有已发布的“页面”类型的文章
|
|
|
'nav_pages': Article.objects.filter(
|
|
|
type='p', # bjy: 类型为'p'(page)
|
|
|
status='p'), # bjy: 状态为'p'(published)
|
|
|
# bjy: 是否开启全站评论功能
|
|
|
'OPEN_SITE_COMMENT': setting.open_site_comment,
|
|
|
# bjy: 网站的ICP备案号
|
|
|
'BEIAN_CODE': setting.beian_code,
|
|
|
# bjy: 网站统计代码(如Google Analytics)
|
|
|
'ANALYTICS_CODE': setting.analytics_code,
|
|
|
# bjy: 公安备案号
|
|
|
"BEIAN_CODE_GONGAN": setting.gongan_beiancode,
|
|
|
# bjy: 是否显示公安备案号
|
|
|
"SHOW_GONGAN_CODE": setting.show_gongan_code,
|
|
|
# bjy: 当前年份,用于页脚版权信息
|
|
|
"CURRENT_YEAR": timezone.now().year,
|
|
|
# bjy: 全局页头HTML代码
|
|
|
"GLOBAL_HEADER": setting.global_header,
|
|
|
# bjy: 全局页脚HTML代码
|
|
|
"GLOBAL_FOOTER": setting.global_footer,
|
|
|
# bjy: 评论是否需要审核
|
|
|
"COMMENT_NEED_REVIEW": setting.comment_need_review,
|
|
|
}
|
|
|
# bjy: 将构建好的字典存入缓存,缓存时间为10小时(60*60*10秒)
|
|
|
cache.set(key, value, 60 * 60 * 10)
|
|
|
# bjy: 返回这个字典,它将被注入到所有模板的上下文中
|
|
|
return value
|