【发布时间】:2021-01-19 17:25:44
【问题描述】:
from fastapi import FastAPI
from datetime import datetime
from ..models import Contact
from ..database import Database
app = FastAPI()
# Dependency
def get_db():
db = Database()
try:
yield db
finally:
db.disconnect()
@app.get("/contacts/", response_model=List[Contact])
async def get_contacts(address: int, start_time: datetime, end_time: datetime, duration: int, distance: int, db: Database = Depends(get_db)):
contacts = detect_contacts(db, address, start_time, end_time, duration, distance)
return contacts
我正在尝试根据 ISO 8601 或 RFC 3339 将查询参数 start_time 和 end_time 作为带有时区的日期时间值。 没有时区也可以正常工作,例如“2021-01-19 16:00:00”或“2021-01-19T16:00:00”,但不能使用时区,例如“2021-01-19 16”: 00:00+05:00”或“2021-01-19T16:00:00+05:00”,返回这样的错误:
{
"detail": [
{
"loc": [
"query",
"start_time"
],
"msg": "invalid datetime format",
"type": "value_error.datetime"
}
]
}
仅供参考,文档中明确提到它支持 datetime.datetime 类型的 ISO 8601 格式:
【问题讨论】:
-
@MrFuppes 是的,我也试过了,没有运气
-
你的查询参数看起来像这样
?start_time=2021-01-19%2016%3A00%3A00%2B05%3A00? -
@alex_noname 不,那是什么?
-
start_time在您的情况下是一个查询参数。怎么寄? -
会不会是您忘记了
datetime中时区的T?你试过2021-01-19T16:00:00+05:00吗?
标签: python datetime fastapi pydantic