You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Airium中实现类似Django的Master Template功能?

在Airium中实现类似Django Master Template的功能

核心结论

Airium本身没有内置“master template”的概念,但借助Python的类继承或函数封装特性,完全可以实现和Django母版页一致的效果——抽象通用页面框架,统一全站外观。

实现方法

方法1:类继承(推荐,适合复杂站点)

定义一个基础母版类,封装所有页面的通用HTML结构(如头部、导航栏、页脚),具体页面类继承该母版类后,仅需重写内容区域的逻辑即可。

示例代码:

import airium

class MasterPage:
    def __init__(self, page_title="My Site"):
        self.a = airium.Airium()
        self.page_title = page_title
        
        # 生成通用页面框架
        with self.a.html(lang="zh-CN"):
            with self.a.head():
                self.a.title(self.page_title)
                self.a.link(rel="stylesheet", href="/static/css/style.css")
                # 可添加其他通用资源:meta标签、全局JS等
            
            with self.a.body():
                # 通用导航栏
                with self.a.nav():
                    self.a.a(href="/")("首页")
                    self.a.a(href="/about")("关于我们")
                
                # 内容占位:由子类重写填充专属内容
                self.content()
                
                # 通用页脚
                with self.a.footer():
                    self.a.p("© 2024 My Site All Rights Reserved")
    
    def content(self):
        # 子类必须重写此方法,实现页面专属内容
        pass

# 具体页面类:首页
class HomePage(MasterPage):
    def __init__(self):
        super().__init__(page_title="首页 - My Site")
    
    def content(self):
        with self.a.main():
            self.a.h1("欢迎访问我的站点")
            self.a.p("这是首页的专属内容区域")

# 渲染并输出页面
home_page = HomePage()
print(home_page.a)

方法2:函数封装(适合简单站点)

把通用页面框架封装成函数,接受页面标题、内容生成函数作为参数,在函数内部拼接通用结构与自定义内容。

示例代码:

import airium

def render_master(page_title, content_func):
    a = airium.Airium()
    with a.html(lang="zh-CN"):
        with a.head():
            a.title(page_title)
            a.link(rel="stylesheet", href="/static/css/style.css")
        
        with a.body():
            # 通用导航栏
            with a.nav():
                a.a(href="/")("首页")
                a.a(href="/about")("关于我们")
            
            # 调用内容函数,生成页面专属内容
            content_func(a)
            
            # 通用页脚
            with a.footer():
                a.p("© 2024 My Site All Rights Reserved")
    return str(a)

# 定义首页内容生成逻辑
def home_content(a):
    with a.main():
        a.h1("欢迎来到首页")
        a.p("这是首页的自定义内容")

# 渲染首页
home_html = render_master("首页 - My Site", home_content)
print(home_html)

额外说明

这种实现方式完全依托Python原生特性,相比Django模板系统,逻辑更灵活——可以直接在代码中使用Python的条件判断、循环、变量运算等语法,无需额外学习模板标签,适合熟悉Python的开发者。

内容的提问来源于stack exchange,提问作者arennuit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 01:02:12