@@ -22,21 +22,42 @@ class MyHomeAdmin(admin.HomeAdmin):
2222 # 获取默认页面
2323 page = await super ().get_page(request)
2424 # 自定义修改
25- page.body.title = ' MyHome'
25+ # page.body.title = 'MyHome' # page.body已改为list类型,该行废弃
26+ # 修改后台首页的内页标题
27+ page.title = ' MyHome'
28+ # 后台首页主体尾部追加内容
29+ page.body.append(' welcome FastApi-AMIS' )
2630 ...
2731 return page
2832```
2933
3034## 示例-2(自定义模板管理基类)
3135
36+ 根目录` templates ` 文件夹中新建` element.html ` ,html内容如下:
37+ ``` html
38+ <!DOCTYPE html>
39+ <html lang =" en" >
40+ <head >
41+ <meta charset =" UTF-8" >
42+ <meta name =" viewport" content =" width=device-width, initial-scale=1.0" >
43+ <title >{{ title }}</title >
44+ </head >
45+ <body >
46+ <h1 >{{ title }}</h1 >
47+ <p >The current time is: {{ current_time }}</p >
48+ </body >
49+ </html >
50+ ```
51+
52+ main.py增加如下代码:
3253``` python linenums="1" hl_lines="6 7 11 20"
3354import datetime
3455
3556from fastapi_amis_admin import admin, amis
3657
3758
3859class MyJinja2Admin (admin .TemplateAdmin ):
39- templates: Jinja2Templates = Jinja2Templates(directory = ' apps/demo/ templates' )
60+ templates: Jinja2Templates = Jinja2Templates(directory = ' templates' )
4061
4162
4263@site.register_admin
@@ -53,9 +74,44 @@ class ElementTemplateAdmin(MyJinja2Admin):
5374 page_schema = amis.PageSchema(label = ' ElementUI' , icon = ' fa fa-link' )
5475 template_name = ' element.html'
5576
56- ```
77+ async def get_page (self , request : Request) -> Dict[str , Any]:
78+ page = await super ().get_page(request)
79+ # 有别于示例1中 admin.HomeAdmin 对page的修改,这里的page来自 admin.TemplateAdmin,是一个dict
80+ page[' title' ] = ' Element Title' # 该行不会生效
81+ return {' current_time' : datetime.datetime.now(), ' title' : ' Element Content' }
5782
83+ ```
5884## 示例-3(重用模型管理类)
85+ 我们在* 模型管理* -示例2的基础上进行改造,将` Article ` 类新增一行属性` is_active: bool = False # add ` ,如下:
86+ ``` python linenums="1" hl_lines="32"
87+ class Article (Base ):
88+ __tablename__ = ' article'
89+
90+ id : Mapped[int ] = mapped_column(Integer, primary_key = True , autoincrement = True )
91+ title: Mapped[str ] = mapped_column(String(200 ), nullable = False )
92+ description: Mapped[str ] = mapped_column(String(400 ), default = ' ' )
93+ status: Mapped[bool ] = mapped_column(Boolean, default = False )
94+ content: Mapped[str ] = mapped_column(String, nullable = False )
95+ category_id: Mapped[Optional[int ]] = mapped_column(Integer, ForeignKey(' category.id' ))
96+ is_active: bool = False # add
97+
98+ ```
99+ 然后我们继承原油` ArticleAdmin ` 重新实现一个新的page类别:
100+ ``` python
101+ @site.register_admin
102+ class ActiveArticle (ArticleAdmin ):
103+ """ 继承重用`ArticleAdmin`;此示例较为简单,实际应用可能比较复杂."""
104+ page_schema = PageSchema(label = ' 文章管理(已激活)' , icon = ' fa fa-file' )
105+ # 自定义路由前缀
106+ router_prefix = ' /article.active'
107+
108+ # 重写基础选择器
109+ async def get_select (self , request : Request) -> Select:
110+ stmt = await super ().get_select(request)
111+ return stmt.where(Article.is_active == True )
112+ ```
113+ 此时,page中将分别有` 文章管理 ` 以及` 文章管理(已激活) ` ,后者将只显示` is_active ` 为True的文章。
114+ ## ~~~示例-3(重用模型管理类)~~~
59115
60116``` python linenums="1" hl_lines="32"
61117from fastapi_amis_admin import admin
0 commit comments