1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        FastAPI-Amis-Adminfastapi 管理后臺(tái)框架

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

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

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

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

        關(guān)鍵特性

        • 性能極高:基于FastAPI, 可享受FastAPI的全部?jī)?yōu)勢(shì)。

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

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

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

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

        • 自動(dòng)生成API文檔: 由FastAPI自動(dòng)生成接口文檔,方便開(kāi)發(fā)者調(diào)試,以及接口分享.

        核心依賴

        • Fastapi 負(fù)責(zé) web 部分
        • SQLModel 負(fù)責(zé)ORM模型映射(完美結(jié)合SQLAlchemy+Pydantic, 擁有SQLAlchemyPydantic的所有功能)
        • Amis 負(fù)責(zé)Admin后臺(tái)頁(yè)面展示

        項(xiàng)目組成

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

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

        安裝

        pip install fastapi_amis_admin

        簡(jiǎn)單示例

        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應(yīng)用
        app = FastAPI()
        
        # 創(chuàng)建AdminSite實(shí)例
        site = AdminSite(settings=Settings(database_url_async='sqlite+aiosqlite:///admisadmin.db'))
        
        # 掛載后臺(tái)管理系統(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應(yīng)用
        app = FastAPI()
        
        # 創(chuàng)建AdminSite實(shí)例
        site = AdminSite(settings=Settings(database_url_async='sqlite+aiosqlite:///admisadmin.db'))
        
        
        # 先創(chuàng)建一個(gè)SQLModel模型,詳細(xì)請(qǐng)參考: 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')
        
        
        # 注冊(cè)ModelAdmin
        @site.register_admin
        class CategoryAdmin(admin.ModelAdmin):
            page_schema = '分類管理'
            # 配置管理模型
            model = Category
        
        
        # 掛載后臺(tái)管理系統(tǒng)
        site.mount_app(app)
        
        
        # 創(chuàng)建初始化數(shù)據(jù)庫(kù)表
        @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應(yīng)用
        app = FastAPI()
        
        # 創(chuàng)建AdminSite實(shí)例
        site = AdminSite(settings=Settings(database_url_async='sqlite+aiosqlite:///admisadmin.db'))
        
        
        # 注冊(cè)FormAdmin
        @site.register_admin
        class UserLoginFormAdmin(admin.FormAdmin):
            page_schema = 'UserLoginForm'
            # 配置表單信息, 可省略
            form = Form(title='這是一個(gè)測(cè)試登錄表單', submitText='登錄')
        
            # 創(chuàng)建表單數(shù)據(jù)模型
            class schema(BaseModel):
                username: str = Field(..., title='用戶名', min_length=3, max_length=30)
                password: str = Field(..., title='密碼')
        
            # 處理表單提交數(shù)據(jù)
            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='用戶名或密碼錯(cuò)誤!')
        
        
        # 掛載后臺(tái)管理系統(tǒng)
        site.mount_app(app)
        
        if __name__ == '__main__':
            import uvicorn
        
            uvicorn.run(app, debug=True)

        界面預(yù)覽

        • 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
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        編輯 分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        編輯 分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            蜜桃夜夜躁狠狠躁日日躁 | 亚洲性爱大片 | 黑人玩弄人妻一区二区三区视频 | 99热亚洲 | AV第一福利大全导航 | 日本人妻在线播放 | 久草国产视频 | 亚洲激情视频 | 国产精品无套无码码在线 | 免费看肏屄毛片 |