fastapi-tortoise-crud


Namefastapi-tortoise-crud JSON
Version 0.2.10 PyPI version JSON
download
home_pageNone
Summaryfastpi简单crud
upload_time2025-02-10 10:41:28
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseMIT
keywords fastapi-admin tortoise-orm crud
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # fastapi-admin

### 项目默认会安装

- fastapi_pagination
- fastapi
- tortoise-orm

### 目前只支持pydantic-v2

## 功能示例

> main.py

```python
from typing import Callable

from fastapi import FastAPI, Depends, HTTPException, Request
from fastapi_pagination import Params
from fastapi_pagination.ext.tortoise import paginate
from tortoise.contrib.fastapi import register_tortoise
from uvicorn import run
from fastapi_tortoise_crud import ModelCrud, BaseApiOut
from models import User


def aa(request: Request, test_params: str = '333'):
    # raise HTTPException(status_code=400, detail='aaa')
    print('aaa')
    return {'id': 1, 'username': 'aaa'}


def bb():
    return 'bb'


class UserCrud(ModelCrud):
    def route_list(self) -> Callable:
        schema_filters = self.schema_filters

        async def route(filters: schema_filters, params: Params = Depends(), order_by: str = '-create_time',
                        a=Depends(aa)):
            print(a)
            filter_item = await self.pre_list(filters)
            queryset = self.model.filter(**filter_item)
            if order_by:
                queryset = queryset.order_by(*order_by.split(','))
            data = await paginate(queryset, params, True)
            return BaseApiOut(data=data)

        return route


user = UserCrud(User,
                schema_filters=User.schema_filters(include=('username', 'status')),
                schema_read=User.schema_read(exclude=('password', 'id')),
                schema_list=User.schema_list(),
                depends_create=False,
                dependencies=[Depends(bb)],
                depends_read=[Depends(aa)]
                )
app = FastAPI()

app.include_router(user, prefix='/user', tags=['用户管理'])


@app.get("/")
async def root():
    return {"message": "Hello World"}


@user.get('/bba')
async def bba():
    return 'bba'


pass

register_tortoise(
    app,
    db_url="sqlite://data.db",
    modules={"models": ["models"]},
    generate_schemas=True,
    add_exception_handlers=True,
)

if __name__ == '__main__':
    run("main:app", port=2103, reload=True)
    pass

```

> models.py

```python
from fastapi_tortoise_crud.model import BaseModel
from tortoise import fields


class User(BaseModel):
    username = fields.CharField(64)
    password = fields.CharField(32)
    nickname = fields.CharField(32, null=True, default='游客')

```

### 路由
![img.png](img.png)

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "fastapi-tortoise-crud",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "Fastapi-admin, Tortoise-orm, Crud",
    "author": null,
    "author_email": "moxiaoying <768091671@qq.com>",
    "download_url": "https://files.pythonhosted.org/packages/85/1e/ebce17c0b36ac2d69bd347a3738610f5ef1ee60e3edafba4591c5c4fb12b/fastapi_tortoise_crud-0.2.10.tar.gz",
    "platform": null,
    "description": "# fastapi-admin\n\n### \u9879\u76ee\u9ed8\u8ba4\u4f1a\u5b89\u88c5\n\n- fastapi_pagination\n- fastapi\n- tortoise-orm\n\n### \u76ee\u524d\u53ea\u652f\u6301pydantic-v2\n\n## \u529f\u80fd\u793a\u4f8b\n\n> main.py\n\n```python\nfrom typing import Callable\n\nfrom fastapi import FastAPI, Depends, HTTPException, Request\nfrom fastapi_pagination import Params\nfrom fastapi_pagination.ext.tortoise import paginate\nfrom tortoise.contrib.fastapi import register_tortoise\nfrom uvicorn import run\nfrom fastapi_tortoise_crud import ModelCrud, BaseApiOut\nfrom models import User\n\n\ndef aa(request: Request, test_params: str = '333'):\n    # raise HTTPException(status_code=400, detail='aaa')\n    print('aaa')\n    return {'id': 1, 'username': 'aaa'}\n\n\ndef bb():\n    return 'bb'\n\n\nclass UserCrud(ModelCrud):\n    def route_list(self) -> Callable:\n        schema_filters = self.schema_filters\n\n        async def route(filters: schema_filters, params: Params = Depends(), order_by: str = '-create_time',\n                        a=Depends(aa)):\n            print(a)\n            filter_item = await self.pre_list(filters)\n            queryset = self.model.filter(**filter_item)\n            if order_by:\n                queryset = queryset.order_by(*order_by.split(','))\n            data = await paginate(queryset, params, True)\n            return BaseApiOut(data=data)\n\n        return route\n\n\nuser = UserCrud(User,\n                schema_filters=User.schema_filters(include=('username', 'status')),\n                schema_read=User.schema_read(exclude=('password', 'id')),\n                schema_list=User.schema_list(),\n                depends_create=False,\n                dependencies=[Depends(bb)],\n                depends_read=[Depends(aa)]\n                )\napp = FastAPI()\n\napp.include_router(user, prefix='/user', tags=['\u7528\u6237\u7ba1\u7406'])\n\n\n@app.get(\"/\")\nasync def root():\n    return {\"message\": \"Hello World\"}\n\n\n@user.get('/bba')\nasync def bba():\n    return 'bba'\n\n\npass\n\nregister_tortoise(\n    app,\n    db_url=\"sqlite://data.db\",\n    modules={\"models\": [\"models\"]},\n    generate_schemas=True,\n    add_exception_handlers=True,\n)\n\nif __name__ == '__main__':\n    run(\"main:app\", port=2103, reload=True)\n    pass\n\n```\n\n> models.py\n\n```python\nfrom fastapi_tortoise_crud.model import BaseModel\nfrom tortoise import fields\n\n\nclass User(BaseModel):\n    username = fields.CharField(64)\n    password = fields.CharField(32)\n    nickname = fields.CharField(32, null=True, default='\u6e38\u5ba2')\n\n```\n\n### \u8def\u7531\n![img.png](img.png)\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "fastpi\u7b80\u5355crud",
    "version": "0.2.10",
    "project_urls": null,
    "split_keywords": [
        "fastapi-admin",
        " tortoise-orm",
        " crud"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a6956a868c442e9e478b90eed03f5e905caa993ecb531fcbcc87a55b0ff473d4",
                "md5": "5806be04e04a18aea00a86a172fae2f1",
                "sha256": "252e346f46553e1165766dc5b38d8d233b2ec11220736b2c717e4075a85a8137"
            },
            "downloads": -1,
            "filename": "fastapi_tortoise_crud-0.2.10-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "5806be04e04a18aea00a86a172fae2f1",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 13641,
            "upload_time": "2025-02-10T10:41:26",
            "upload_time_iso_8601": "2025-02-10T10:41:26.908851Z",
            "url": "https://files.pythonhosted.org/packages/a6/95/6a868c442e9e478b90eed03f5e905caa993ecb531fcbcc87a55b0ff473d4/fastapi_tortoise_crud-0.2.10-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "851eebce17c0b36ac2d69bd347a3738610f5ef1ee60e3edafba4591c5c4fb12b",
                "md5": "6bcf94eade95ae0b82c04c1451673206",
                "sha256": "106ddbb9f5ebb7154442beca5b4c12616ce7c44684f14990e44c8970d055c58b"
            },
            "downloads": -1,
            "filename": "fastapi_tortoise_crud-0.2.10.tar.gz",
            "has_sig": false,
            "md5_digest": "6bcf94eade95ae0b82c04c1451673206",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 15730,
            "upload_time": "2025-02-10T10:41:28",
            "upload_time_iso_8601": "2025-02-10T10:41:28.620499Z",
            "url": "https://files.pythonhosted.org/packages/85/1e/ebce17c0b36ac2d69bd347a3738610f5ef1ee60e3edafba4591c5c4fb12b/fastapi_tortoise_crud-0.2.10.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-02-10 10:41:28",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "fastapi-tortoise-crud"
}
        
Elapsed time: 0.84859s