import logging # mk:导入日志记录模块# from django.utils import timezone # mk:导入Django的时间工具模块# from djangoblog.utils import cache, get_blog_setting # mk:从项目工具模块导入缓存和获取博客设置的函数# from .models import Category, Article # mk:从当前应用的模型中导入分类和文章模型# logger = logging.getLogger(__name__) # mk:创建当前模块的日志记录器# def seo_processor(requests): # mk:SEO处理器函数,用于获取网站SEO相关配置信息并缓存# """ SEO处理器函数,用于获取网站SEO相关配置信息并缓存 该函数从缓存中获取SEO配置信息,如果缓存不存在则从数据库获取并设置缓存。 主要包含网站基本信息、SEO配置、导航分类列表、页面列表等数据。 Args: requests: HTTP请求对象,用于获取请求协议和主机信息 Returns: dict: 包含SEO配置信息的字典,具体包含: - SITE_NAME: 网站名称 - SHOW_GOOGLE_ADSENSE: 是否显示Google Adsense - GOOGLE_ADSENSE_CODES: Google Adsense代码 - SITE_SEO_DESCRIPTION: 网站SEO描述 - SITE_DESCRIPTION: 网站描述 - SITE_KEYWORDS: 网站关键词 - SITE_BASE_URL: 网站基础URL - ARTICLE_SUB_LENGTH: 文章摘要长度 - nav_category_list: 导航分类列表 - nav_pages: 导航页面列表 - OPEN_SITE_COMMENT: 是否开启网站评论 - BEIAN_CODE: 备案号 - ANALYTICS_CODE: 统计代码 - BEIAN_CODE_GONGAN: 公安备案号 - SHOW_GONGAN_CODE: 是否显示公安备案号 - CURRENT_YEAR: 当前年份 - GLOBAL_HEADER: 全局头部代码 - GLOBAL_FOOTER: 全局底部代码 - COMMENT_NEED_REVIEW: 评论是否需要审核 """ key = 'seo_processor' # mk:设置缓存键名# value = cache.get(key) # mk:尝试从缓存中获取SEO数据# # mk:检查缓存是否存在,如果存在则直接返回缓存数据# if value: return value else: logger.info('set processor cache.') # mk:记录设置缓存的日志信息# # mk:缓存不存在,从数据库获取配置信息# setting = get_blog_setting() value = { # mk:构建包含网站SEO配置和导航数据的字典对象# 'SITE_NAME': setting.site_name, # mk:网站名称,显示在网页标题等位置# 'SHOW_GOOGLE_ADSENSE': setting.show_google_adsense, # mk:是否显示Google Adsense广告的开关# 'GOOGLE_ADSENSE_CODES': setting.google_adsense_codes, # mk:Google Adsense广告代码内容# 'SITE_SEO_DESCRIPTION': setting.site_seo_description, # mk:网站SEO描述信息,用于meta标签# 'SITE_DESCRIPTION': setting.site_description, # mk:网站描述信息# 'SITE_KEYWORDS': setting.site_keywords, # mk:网站关键词,用于SEO优化# 'SITE_BASE_URL': requests.scheme + '://' + requests.get_host() + '/', # mk:网站基础URL地址,由请求协议和主机名组成# 'ARTICLE_SUB_LENGTH': setting.article_sub_length, # mk:文章摘要显示长度设置# 'nav_category_list': Category.objects.all(), # mk:获取所有文章分类,用于导航菜单显示# 'nav_pages': Article.objects.filter( # mk:获取所有已发布的页面文章,用于导航菜单显示# type='p', status='p'), 'OPEN_SITE_COMMENT': setting.open_site_comment, # mk:网站评论功能开关设置# 'BEIAN_CODE': setting.beian_code, # mk:网站备案号信息# 'ANALYTICS_CODE': setting.analytics_code, # mk:网站统计分析代码# "BEIAN_CODE_GONGAN": setting.gongan_beiancode, # mk:公安备案号信息# "SHOW_GONGAN_CODE": setting.show_gongan_code, # mk:是否显示公安备案信息的开关# "CURRENT_YEAR": timezone.now().year, # mk:当前年份,用于页面底部显示版权年份# "GLOBAL_HEADER": setting.global_header, # mk:全局页头HTML代码# "GLOBAL_FOOTER": setting.global_footer, # mk:全局页脚HTML代码# "COMMENT_NEED_REVIEW": setting.comment_need_review, # mk:评论是否需要审核的设置# } # mk:将获取到的数据缓存10小时,减少数据库查询压力# cache.set(key, value, 60 * 60 * 10) return value # mk:返回构建的SEO和导航数据#