我使用 Jinja 模板引擎制作了一个表单。去了地址。我按发送,它出来了:
{"detail":[{"loc":["body","username"],"msg":"field required","type":"value_error.missing"}]}
如果您转到文档页面并从那里发送数据,则没有错误,您可以在打印中看到输入的数据。
@app.get("/", response_class=HTMLResponse)
async def index(request: Request):
return templates.TemplateResponse("sign_in.html", {"request": request})
@app.post("/")
async def login(username: str = Form(), password: str = Form()):
print('username:', username)
print('password:', password)
return {"username": username}
我做错了什么?为什么我通过放在sign_in.html页面上的表单看不到提交的数据?
表格本身:
<form name="sign_in" id="form_0" action="/" method="post" enctype=multipart/form-data>
<div class="input">
<div class="blockinput">
<input type="email" name="email" placeholder="e-mail">
</div>
<div class="blockinput">
<input type="password" name="password" placeholder="Пароль">
</div>
</div>
<div>
<input class="in_submit" type="submit" value="Войти">
</div>
</form>
添加:
@app.get("/", response_class=HTMLResponse)
async def index(request: Request):
print('*@app.get*')
return templates.TemplateResponse("sign_in.html", {"request": request})
@app.post("/")
async def login(username: str = Form(), password: str = Form()):
print('*@app.post*')
print('username:', username)
print('password:', password)
return {"username": username}
通过浏览器访问页面“127.0.0.1”时打印:
*@app.get*
INFO: 127.0.0.1:64572 - "GET / HTTP/1.1" 200 OK
INFO: 127.0.0.1:64572 - "POST / HTTP/1.1" 422 Unprocessable Entity
INFO: 127.0.0.1:64572 - "GET /favicon.ico HTTP/1.1" 405 Method Not Allowed
这是在发送后的浏览器中: 打印,通过页面“http://127.0.0.1:8001/docs#/default/login__post”发送数据时
*@app.post*
username: www@ww.ww
password: wwwwww
INFO: 127.0.0.1:64600 - "POST / HTTP/1.1" 200 OK
总的来说,我想通了。如果有人在这件事上也啃花岗岩,我会留下决定:
注意表格中的名称:
在链接处理程序中,使用相同的名称:
就这样。提交后,数据进入/submitform。在那里你可以和他们一起工作,然后你可以重定向(我在我发送的同一页面上)。