23 lines
805 B
Python
23 lines
805 B
Python
"""
|
|
模板渲染:支持加密 HTML 解密后渲染
|
|
"""
|
|
import os
|
|
from flask import render_template, render_template_string
|
|
|
|
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|
|
|
|
|
def render_html(template_name: str, **context):
|
|
"""读取 HTML 模板:若为加密文件则先解密,再渲染。未加密或解密失败时按明文渲染。"""
|
|
path = os.path.join(BASE_DIR, "web_source", template_name)
|
|
if not os.path.isfile(path):
|
|
return render_template(template_name, **context)
|
|
with open(path, "rb") as f:
|
|
raw = f.read()
|
|
try:
|
|
from html_crypto import decrypt
|
|
content = decrypt(raw).decode("utf-8")
|
|
except Exception:
|
|
content = raw.decode("utf-8", errors="replace")
|
|
return render_template_string(content, **context)
|