站点配置
AmisSite 提供了丰富的配置选项,让你可以自定义管理后台的外观和行为。
基础配置
创建站点
from fastapi_amis.core.site import AmisSite
site = AmisSite(
title="我的管理后台",
logo="https://example.com/logo.png"
)
常用参数
site = AmisSite(
title="管理后台", # 站点标题
logo="https://...", # Logo URL
favicon="https://...", # 网站图标
description="系统描述", # 站点描述
theme="cxd" # 主题名称
)
主题配置
Amis 提供了多个内置主题:
# 默认主题
site = AmisSite(theme="cxd")
# 暗黑主题
site = AmisSite(theme="dark")
# 移动端主题
site = AmisSite(theme="antd")
自定义主题色
site = AmisSite(
title="管理后台",
theme={
"className": "my-theme",
"colors": {
"primary": "#007bff",
"success": "#28a745",
"warning": "#ffc107",
"danger": "#dc3545",
"info": "#17a2b8"
}
}
)
导航配置
侧边栏导航
# 添加路由器到站点
user_router = AmisViewRouter(
name="用户管理",
icon="fa fa-users"
)
site.add_router(user_router)
system_router = AmisViewRouter(
name="系统设置",
icon="fa fa-cog"
)
site.add_router(system_router)
导航位置
site = AmisSite(
title="管理后台",
asideResizor=True, # 允许调整侧边栏大小
asideSticky=True, # 侧边栏固定
asideMinified=False, # 默认是否收起侧边栏
)
顶部导航
site = AmisSite(
title="管理后台",
header={
"title": "管理后台",
"logo": "https://...",
"body": [
{
"type": "tpl",
"tpl": '<div class="ml-auto">用户:Admin</div>'
}
]
}
)
页面布局
布局模式
# 侧边栏布局(默认)
site = AmisSite(layout="aside")
# 顶部导航布局
site = AmisSite(layout="header")
# 混合布局
site = AmisSite(layout="auto")
内容区域
site = AmisSite(
title="管理后台",
body={
"type": "page",
"className": "custom-page",
"body": [
# 页面内容
]
}
)
挂载配置
挂载到 FastAPI
from fastapi import FastAPI
app = FastAPI()
# 默认挂载到根路径
site.mount_to_app(app)
# 挂载到指定路径
site.mount_to_app(app, prefix="/admin")
多站点挂载
# 前台站点
frontend_site = AmisSite(title="前台系统")
frontend_site.mount_to_app(app, prefix="/")
# 后台站点
admin_site = AmisSite(title="后台管理")
admin_site.mount_to_app(app, prefix="/admin")
高级配置
自定义页面模板
FastAPI Amis 使用 Jinja2 模板,你可以自定义模板:
site = AmisSite(
title="管理后台",
template_path="/path/to/templates", # 自定义模板目录
template_name="my_template.html" # 自定义模板文件
)
API 前缀
静态资源
国际化
设置语言
自定义翻译
site = AmisSite(
title="管理后台",
locale="zh-CN",
translations={
"zh-CN": {
"save": "保存",
"cancel": "取消",
"confirm": "确定"
}
}
)
权限配置
全局权限检查
from fastapi import Depends
def check_auth(request: Request):
"""全局权限检查"""
if not request.state.user:
raise HTTPException(status_code=401)
site = AmisSite(
title="管理后台",
dependencies=[Depends(check_auth)]
)
路由级权限
def require_admin():
def dependency(request: Request):
if not request.state.user.is_admin:
raise HTTPException(status_code=403)
return Depends(dependency)
admin_router = AmisViewRouter(
name="管理员",
dependencies=[require_admin()]
)
完整配置示例
from fastapi import FastAPI, Depends
from fastapi_amis.core.site import AmisSite
from fastapi_amis.core.router import AmisViewRouter
app = FastAPI()
# 创建站点
site = AmisSite(
# 基础配置
title="企业管理系统",
logo="https://example.com/logo.png",
favicon="https://example.com/favicon.ico",
description="企业内部管理系统",
# 主题配置
theme="cxd",
# 布局配置
layout="aside",
asideResizor=True,
asideSticky=True,
# 顶部配置
header={
"title": "企业管理系统",
"logo": "https://example.com/logo.png",
"body": [
{
"type": "dropdown-button",
"label": "${user.name}",
"className": "ml-auto",
"trigger": "hover",
"buttons": [
{
"type": "button",
"label": "个人设置",
"actionType": "link",
"link": "/profile"
},
{
"type": "button",
"label": "退出登录",
"actionType": "ajax",
"api": "post:/api/logout"
}
]
}
]
},
# API 配置
api_prefix="/api",
# 国际化
locale="zh-CN"
)
# 创建路由
dashboard_router = AmisViewRouter(
name="仪表盘",
icon="fa fa-dashboard"
)
user_router = AmisViewRouter(
name="用户管理",
icon="fa fa-users"
)
system_router = AmisViewRouter(
name="系统设置",
icon="fa fa-cog"
)
# 添加路由
site.add_router(dashboard_router)
site.add_router(user_router)
site.add_router(system_router)
# 挂载到应用
site.mount_to_app(app, prefix="/admin")
环境变量配置
推荐使用环境变量管理配置:
import os
from pydantic_settings import BaseSettings
class Settings(BaseSettings):
app_title: str = "管理后台"
app_logo: str = ""
app_theme: str = "cxd"
class Config:
env_file = ".env"
settings = Settings()
site = AmisSite(
title=settings.app_title,
logo=settings.app_logo,
theme=settings.app_theme
)
.env 文件: