90 lines
2.7 KiB
Python
90 lines
2.7 KiB
Python
#!/usr/bin/env python3.9
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
Example demonstrating how to use the render function
|
|
"""
|
|
|
|
from pyenjoy.template.Engine import Engine
|
|
|
|
# Initialize the engine (global instance)
|
|
engine = Engine.use()
|
|
|
|
# Configure the engine (optional)
|
|
engine.base_template_path = "./templates" # Set base template directory
|
|
engine.encoding = "utf-8" # Set template encoding
|
|
engine.dev_mode = True # Enable auto-reload for development
|
|
|
|
def render(page, data):
|
|
"""
|
|
Render a template file with provided data
|
|
|
|
Args:
|
|
page: Template file name (relative to base_template_path)
|
|
data: Dictionary with template data
|
|
|
|
Returns:
|
|
Rendered template string
|
|
"""
|
|
template = engine.get_template(page)
|
|
result = template.render_to_string(data)
|
|
return result
|
|
|
|
def render_string(template_content, data):
|
|
"""
|
|
Render a template string with provided data
|
|
|
|
Args:
|
|
template_content: Template content as string
|
|
data: Dictionary with template data
|
|
|
|
Returns:
|
|
Rendered template string
|
|
"""
|
|
template = engine.get_template_by_string(template_content)
|
|
result = template.render_to_string(data)
|
|
return result
|
|
|
|
# Example usage
|
|
if __name__ == "__main__":
|
|
# Example 1: Render from file
|
|
print("Example 1: Render from file")
|
|
print("=" * 50)
|
|
try:
|
|
# Create a simple template file for testing
|
|
import os
|
|
# os.makedirs("./templates", exist_ok=True)
|
|
# with open("./templates/test.html", "w", encoding="utf-8") as f:
|
|
# f.write("Hello, #(name)!")
|
|
|
|
# Render the template
|
|
data = {"name": "World", "items": [
|
|
{"id": 1, "title": "文章1", "author": "张三", "tags": ["cdms", "管理系统"], "create_time": "2023-01-01"},
|
|
{"id": 2, "title": "文章2", "author": "李四", "tags": ["python"], "create_time": "2023-02-01"}
|
|
]}
|
|
result = render("test.html", data)
|
|
print(f"Rendered result: {result}")
|
|
|
|
# Clean up
|
|
# os.remove("./templates/test.html")
|
|
# os.rmdir("./templates")
|
|
except Exception as e:
|
|
print(f"Error: {e}")
|
|
|
|
# Example 2: Render from string
|
|
print("\nExample 2: Render from string")
|
|
print("=" * 50)
|
|
template_content = "Name: #(name), Age: #(age??'未知')"
|
|
data = {"name": "张三"}
|
|
result = render_string(template_content, data)
|
|
print(f"Rendered result: {result}")
|
|
|
|
# Example 3: Render with filters
|
|
print("\nExample 3: Render with filters")
|
|
print("=" * 50)
|
|
template_content = "Tags: #(tags | join(', '))"
|
|
data = {"tags": ["cdms", "管理系统"]}
|
|
result = render_string(template_content, data)
|
|
print(f"Rendered result: {result}")
|
|
|
|
print("\nAll examples completed!")
|