FastUI
FastUI copied to clipboard
Form data is being sent as empty after 2 errors
When filling form data, if it fails twice, on third attempts, it sends empty form data.
To reproduce, run this app with uvicorn, and then fill the form and submit for 3 times
from typing import Annotated
from fastapi import FastAPI, HTTPException
from fastapi.responses import HTMLResponse, RedirectResponse
from fastui import FastUI, prebuilt_html
from fastui import components as c
from fastui.forms import fastui_form
from pydantic import BaseModel, Field, SecretStr
class LoginForm(BaseModel):
username: str = Field(title='Email Address')
password: SecretStr
def login_component():
return [
c.Heading(text='Login Form', level=2, class_name='center'),
c.ModelForm(model=LoginForm, display_mode='page', submit_url='/api/forms/login'),
]
app = FastAPI()
@app.get('/')
async def main():
return HTMLResponse(prebuilt_html(title='Operation Dashboard'))
@app.get('/api', response_model=FastUI, response_model_exclude_none=True)
async def login() -> list[c.AnyComponent] | RedirectResponse:
"""Root of website"""
return [*login_component()]
@app.post('/api/forms/login', response_model=FastUI, response_model_exclude_none=True)
async def submit_login(
form: Annotated[LoginForm, fastui_form(LoginForm)],
):
raise HTTPException(401, 'Bad data')
Console log: