# 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='游客')
```
### 路由

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\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"
}