Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

[Duplicado] Favor ignorar/excluir

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.

1 resposta

Oi, Jerônimo, como vai?

Caso encontre alguma outra situação durante o curso ou tenha novas sugestões sobre o conteúdo, fique à vontade para compartilhar por aqui.

O fórum está à disposição para ajudar.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!