cover from LeIsT0

写在前面#

2026年了,我总会去细细端详自己的作品,这不,今天逛自己博客的时候,发现这个版权年份没有更新,就是下面那行字还停留在2025年,如果我没改的话,我今年还有版权吗?

鉴于之前的代码基本上是AI完成的,我直接把要改的东西扔给AI,叫他给我建议,我自己改代码。

当然,喜欢简单的可以一次性将字符串硬编码在文件里面。

更改点#

在类的初始化函数中添加生成版权字符串的代码:

# 初始化Jinja2环境
self.env = Environment(loader=FileSystemLoader(self.templates_dir))
# 计算动态版权年份
start_year = 2025
current_year = datetime.now().year
if current_year > start_year:
year_str = f"{start_year}-{current_year}"
else:
year_str = str(start_year)
self.copyright_text = (
f"© {year_str} Pblog. Build by Python + Jinja2 + Markdown."
)

self.copyright_text 将会在之后用到。


然后是在index.html模板中添加jinja2变量:

<footer>
  <p>{{copyright_text}}</p>
</footer>

{{copyright_text}}属于Jinja2语法,将会在渲染时被替换为传入的值。


然后在需要的页面上传入变量:

def generate_index_page(self):
    """生成新的首页"""
    template = self.env.get_template('index.html')  # 获取模板
    output_path = os.path.join(self.output_dir, 'index.html')  #
    # 传入变量
    with open(output_path, 'w', encoding='utf-8') as f:
        f.write(template.render(base_url='', copyright_text=self.copyright_text))
    print("已生成新的首页")

self.copyright_text可以的值是任意字符串,变量名也不一定非要这个,可以取自己喜欢的。 render函数的参数名要与模板中的变量名一致。


好了,基本上就是这样了,如果还有什么问题,欢迎在评论区提出。