0

我希望每个人都平安无事。我正在尝试此代码以使其正常工作。我有一个 main.py 文件和 models.py 文件,其中我在 models.py 文件中创建了一个类用户,我正在尝试将 User 类从 models.py 文件导入到 main.py 文件。我为此目的使用 Tortoise ORM。我在命令提示符下收到错误“ImportError: cannot import name 'register_tortoise' from 'tortoise.contrib.pydantic'”

**main.py**

from fastapi import FastAPI, Request, Form, HTTPException
from fastapi.responses import HTMLResponse
from fastapi.templating import Jinja2Templates
from fastapi.staticfiles import StaticFiles
from models import User_Pydantic, UserIn_Pydantic, User
from tortoise.contrib.pydantic import register_tortoise, HTTPNotFoundError



app = FastAPI()


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

)

app.mount("/static", StaticFiles(directory="static"), name="static")

templates = Jinja2Templates(directory="templates")



@app.get("/", response_class=HTMLResponse)
async def login_page(request :Request):
    return templates.TemplateResponse("index.html", {"request":request})


@app.post("/loginsuccess/", response_class=HTMLResponse)
async def login_success(request: Request, username: str = Form(...), password: str = Form(...)):

    if username=='michael' and password=='clarke':
        return templates.TemplateResponse("homepage.html", {"request": request, "username":username})
    else:
        status_code:int
        status_code = 500
        return templates.TemplateResponse("index.html", {"request":request, "status_code":status_code})



**models.py**

from tortoise import fields
from tortoise.models import Model
from tortoise.contrib.pydantic import pydantic_model_creator

class User(Model):
    id = fields.CharField(pk=True, max_length=50)
    username = fields.CharField(max_length=50, unique=True)
    password = fields.CharField(max_length=50, null=True)


    class PydanticMeta:
        pass 

User_Pydantic = pydantic_model_creator(User, name="User")
UserIn_Pydantic = pydantic_model_creator(User, name="UserIn", exclude_readonly=True)


4

1 回答 1

0

The library's API was changed, and you need to use this one:

from tortoise.contrib.fastapi import HTTPNotFoundError, register_tortoise

instead for:

from tortoise.contrib.pydantic import register_tortoise, HTTPNotFoundError
于 2021-05-27T18:28:51.400 回答