Devido a uma atualização do template no fastAPI o código exatamente igual do professor está ocorrendo um erro de dicionário onde o causador é esse abaixo:
TypeError: unhashable type: 'dict' ele acontece por causa de uma mudança na assinatura do método templates.TemplateResponse nas versões mais recentes do Starlette / FastAPI (a partir do Starlette 0.28+).
Anteriormente, a assinatura aceitava o dicionário context como segundo argumento positional ("index.html", context). Nas versões mais recentes, o parâmetro do dicionário precisa passar explicitamente como context= ou a requisição é passada de forma nomeada (request=request).
o código do professor em main.py dentro do app está escrito assim:
@app.get("/", response_class=HTMLResponse)
async def front_page(request: Request):
return templates.TemplateResponse(
"index.html",
{"request": request, "titulo": "Techlog Solutions CRM", "versao": "1.0.0"}
)
caso você esteja tendo o mesmo erro a solução atualizada está abaixo:
@app.get("/", response_class=HTMLResponse)
async def front_page(request: Request):
return templates.TemplateResponse(
request= request,
name= "index.html",
context={
"titulo": "Techlog Solutions CRM",
"versao": "1.0.0",
},
)
são apenas duas mudanças simples, o request é levado para fora do dicionário e estamos dando um nome para o "index.html", corrigindo isso deve rodar normalmente.