#zf:导入日志模块,用于记录日志信息 import logging #zf:导入Django时区模块,用于获取当前时间 from django.utils import timezone #zf:从djangoblog.utils模块导入缓存和获取博客设置的工具函数 from djangoblog.utils import cache, get_blog_setting #zf:从当前包导入Category和Article模型 from .models import Category, Article #zf:创建日志记录器 logger = logging.getLogger(__name__) #zf:定义SEO处理器函数,作为Django的上下文处理器 def seo_processor(requests): #zf:设置缓存键名 key = 'seo_processor' #zf:尝试从缓存中获取数据 value = cache.get(key) #zf:如果缓存中有数据,直接返回 if value: return value else: #zf:如果缓存中没有数据,记录日志 logger.info('set processor cache.') #zf:获取博客设置 setting = get_blog_setting() #zf:构造要返回的上下文数据字典 value = { #zf:网站名称 'SITE_NAME': setting.site_name, #zf:是否显示谷歌广告 'SHOW_GOOGLE_ADSENSE': setting.show_google_adsense, #zf:谷歌广告代码 'GOOGLE_ADSENSE_CODES': setting.google_adsense_codes, #zf:网站SEO描述 'SITE_SEO_DESCRIPTION': setting.site_seo_description, #zf:网站描述 'SITE_DESCRIPTION': setting.site_description, #zf:网站关键词 'SITE_KEYWORDS': setting.site_keywords, #zf:网站基础URL(协议+主机名+/) 'SITE_BASE_URL': requests.scheme + '://' + requests.get_host() + '/', #zf:文章摘要长度 'ARTICLE_SUB_LENGTH': setting.article_sub_length, #zf:导航分类列表(所有分类) 'nav_category_list': Category.objects.all(), #zf:导航页面(所有已发布的页面类型文章) 'nav_pages': Article.objects.filter( type='p', #zf:类型为页面('p') status='p'), #zf:状态为已发布('p') #zf:是否开启网站评论功能 'OPEN_SITE_COMMENT': setting.open_site_comment, #zf:备案号 'BEIAN_CODE': setting.beian_code, #zf:网站统计代码 'ANALYTICS_CODE': setting.analytics_code, #zf:公安备案号 "BEIAN_CODE_GONGAN": setting.gongan_beiancode, #zf:是否显示公安备案号 "SHOW_GONGAN_CODE": setting.show_gongan_code, #zf:当前年份(用于版权信息等) "CURRENT_YEAR": timezone.now().year, #zf:全局头部内容 "GLOBAL_HEADER": setting.global_header, #zf:全局尾部内容 "GLOBAL_FOOTER": setting.global_footer, #zf:评论是否需要审核 "COMMENT_NEED_REVIEW": setting.comment_need_review, } #zf:将数据缓存10小时(60秒*60分钟*10小时) cache.set(key, value, 60 * 60 * 10) #zf:返回构造的数据 return value