<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          FastAPI-Amis-Adminfastapi 管理后臺框架

          聯(lián)合創(chuàng)作 · 2023-09-20 01:20

          fastapi-amis-admin 是一個擁有高性能、高效率、易拓展的 fastapi 管理后臺框架,啟發(fā)自 Django-Admin,并且擁有不遜色于Django-Admin的強大功能。

          fastapi-amis-admin 基于fastapi+amis開發(fā)的高性能并且高效率 web-admin 框架,使用 Python 3.6+ 并基于標準的 Python 類型提示。 

          fastapi-amis-admin開發(fā)的初衷是為了完善fastapi應用生態(tài), 為fastapi web應用程序快速生成一個可視化管理后臺. fastapi-amis-admin遵循Apache2.0協(xié)議免費開源, 但是為了更好的長期運營與維護此項目, fastapi-amis-admin非常希望能夠得到大家的贊助與支持.

          關鍵特性

          • 性能極高:基于FastAPI, 可享受FastAPI的全部優(yōu)勢。

          • 效率更快:完善的編碼類型提示, 代碼可重用性更高.

          • 支持異步和同步混合編寫: ORM基于SQLModel+Sqlalchemy, 可自由定制數(shù)據庫類型, 支持同步及異步模式, 可拓展性強.

          • 前后端分離: 前端由Amis渲染, 后端接口由fastapi-amis-admin自動生成, 接口可重復利用.

          • 可拓展性強: 后臺頁面支持Amis頁面及普通html頁面,開發(fā)者可以很方便的自由定制界面.

          • 自動生成API文檔: 由FastAPI自動生成接口文檔,方便開發(fā)者調試,以及接口分享.

          核心依賴

          項目組成

          fastapi-amis-admin由三部分核心模塊組成,其中amis, fastapi-sqlmodel-crud 可作為獨立模塊單獨使用,amis_admin基于前者共同構建.

          • amis: 基于baidu amispydantic數(shù)據模型構建庫,用于快速生成/解析amis json 數(shù)據.
          • fastapi-sqlmodel-crud: 基于FastAPI+SQLModel, 用于快速構建Create,Read,Update,Delete通用API接口.
          • amis_admin: 啟發(fā)自Django-Admin, 結合amis+fastapi-sqlmodel-crud, 用于快速構建Web Admin管理后臺.

          安裝

          pip install fastapi_amis_admin

          簡單示例

          from fastapi import FastAPI
          from fastapi_amis_admin.amis_admin.settings import Settings
          from fastapi_amis_admin.amis_admin.site import AdminSite
          
          # 創(chuàng)建FastAPI應用
          app = FastAPI()
          
          # 創(chuàng)建AdminSite實例
          site = AdminSite(settings=Settings(database_url_async='sqlite+aiosqlite:///admisadmin.db'))
          
          # 掛載后臺管理系統(tǒng)
          site.mount_app(app)
          
          if __name__ == '__main__':
              import uvicorn
          
              uvicorn.run(app, debug=True)

          模型管理示例

          from fastapi import FastAPI
          from sqlmodel import SQLModel
          from fastapi_amis_admin.amis_admin.settings import Settings
          from fastapi_amis_admin.amis_admin.site import AdminSite
          from fastapi_amis_admin.amis_admin import admin
          from fastapi_amis_admin.models.fields import Field
          
          # 創(chuàng)建FastAPI應用
          app = FastAPI()
          
          # 創(chuàng)建AdminSite實例
          site = AdminSite(settings=Settings(database_url_async='sqlite+aiosqlite:///admisadmin.db'))
          
          
          # 先創(chuàng)建一個SQLModel模型,詳細請參考: https://sqlmodel.tiangolo.com/
          class Category(SQLModel, table=True):
              id: int = Field(default=None, primary_key=True, nullable=False)
              name: str = Field(title='CategoryName')
              description: str = Field(default='', title='Description')
          
          
          # 注冊ModelAdmin
          @site.register_admin
          class CategoryAdmin(admin.ModelAdmin):
              page_schema = '分類管理'
              # 配置管理模型
              model = Category
          
          
          # 掛載后臺管理系統(tǒng)
          site.mount_app(app)
          
          
          # 創(chuàng)建初始化數(shù)據庫表
          @app.on_event("startup")
          async def startup():
              await site.create_db_and_tables()
          
          
          if __name__ == '__main__':
              import uvicorn
          
              uvicorn.run(app, debug=True)

          表單管理示例

          from typing import Any
          from fastapi import FastAPI
          from pydantic import BaseModel
          from starlette.requests import Request
          from fastapi_amis_admin.amis.components import Form
          from fastapi_amis_admin.amis_admin import admin
          from fastapi_amis_admin.amis_admin.settings import Settings
          from fastapi_amis_admin.amis_admin.site import AdminSite
          from fastapi_amis_admin.crud.schema import BaseApiOut
          from fastapi_amis_admin.models.fields import Field
          
          # 創(chuàng)建FastAPI應用
          app = FastAPI()
          
          # 創(chuàng)建AdminSite實例
          site = AdminSite(settings=Settings(database_url_async='sqlite+aiosqlite:///admisadmin.db'))
          
          
          # 注冊FormAdmin
          @site.register_admin
          class UserLoginFormAdmin(admin.FormAdmin):
              page_schema = 'UserLoginForm'
              # 配置表單信息, 可省略
              form = Form(title='這是一個測試登錄表單', submitText='登錄')
          
              # 創(chuàng)建表單數(shù)據模型
              class schema(BaseModel):
                  username: str = Field(..., title='用戶名', min_length=3, max_length=30)
                  password: str = Field(..., title='密碼')
          
              # 處理表單提交數(shù)據
              async def handle(self, request: Request, data: BaseModel, **kwargs) -> BaseApiOut[Any]:
                  if data.username == 'amisadmin' and data.password == 'amisadmin':
                      return BaseApiOut(msg='登錄成功!', data={'token': 'xxxxxx'})
                  return BaseApiOut(status=-1, msg='用戶名或密碼錯誤!')
          
          
          # 掛載后臺管理系統(tǒng)
          site.mount_app(app)
          
          if __name__ == '__main__':
              import uvicorn
          
              uvicorn.run(app, debug=True)

          界面預覽

          • Open http://127.0.0.1:8000/admin/ in your browser

          ModelAdmin

          • Open http://127.0.0.1:8000/admin/docs in your browser

          Docs

           

          瀏覽 34
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日日干视频 | 一级黄色视频直播 | 干av在线 | 操B无码视频 | 成人无码区免费AV毛片 |