Oi, estou fazendo uma aplicação de lista, na qual, quando tento enviar um dado para adicionar na minha lista, dá uma mensagem de "Method Not Allowed
The method is not allowed for the requested URL."
#Flask com HTML e CSS
1 messages · Page 1 of 1 (latest)
@dense lantern o form tem que ser submetido pra rota /criar
@clever peak Meu Deus, era isso mesmo!!! MUITO OBRIGADO kkkkk, estava tentando a dias encontrar o erro
@clever peak Desculpa incomodar de novo. É que agora eu queria colocar uma função para deletar uma das opções da minha lista, mas eu não faço ideia em como faço isso, teria como me dar alguma luz quanto a isso novamente?
@dense lantern pra manter simples, vc pode criar uma rota da mesma forma que a rota erro: que receba um parametro na url. por exemplo /deletar/<int:indice> , em que indice vai ser o indice da tarefa na lista
nessa rota, vc executa lista.remove(indice) para remover a tarefa
Hmmm, bacana, vou tentar, muito obrigado
@clever peak Desculpa incomodar mais uma vez, juro que é a última kkkk, mas deu esse erro, parece que o índice não deu
ah
sim, o argumento do remove na real eh pra remover o valor que esta no indice (lista[indice])
vc pode executar del lista[indice]
claro, irmao, qqr coisa grita ae
@clever peak Irmão, pode me dar mais um help? Queria agora poder adicionar uma /alterar, para alterar uma tarefa em específico, bati cabeça e não consegui também...
E também botar, na frente da tarefa, o número dela, por exemplo: 1 - Tarefa 1 , 2 - Tarefa 2
@dense lantern precisa criar uma rota nova, certo?
parecida com a de criar, que recebe informacoes da tarefa.
a diferenca é que em vez de criar, vc quer alterar, entao vc precisa também de uma referencia sobre qual tarefa vc quer alterar.nesse caso funciona como a rota deletar, em que vc informa um indice na URL pra achar a tarefa
nada, ó o erro ali:
mas precisa ajeitar um pouco o funcionamento dessa nova rota
esse são os passos que a rota precisa fazer:
@app.route('/alterar/<int:indice>`)
def alterar(indice):
# checar se o indice existe na lista de tarefas
# pegar dados do form
# alterar o objeto que está na posição "indice" com os dados do form
# retornar template
ok, muitíssimo obrigado, vou testar aqui
@clever peak Deu isso
entao, se vc notar, eu tirei o string:nome da rota. isso pois a rota não receberá o nome pela URL, mas sim pelo conteudo enviado pelo formulario
indice in lista está checando se tal indice está na lista, mas no sentido de ser um valor incluso na lista. por exemplo:
lista = [20, 10, 30]
10 in lista
é True, pois 10 está na lista
agora, vc quer checar se o indice existe na lista. ou seja, não como um valor, mas algo acessivel via lista[indice]
uma forma de fazer isso é checando se o indice está dentro dos limites da lista, ou seja, entre 0 e len(lista):
if 0 <= indice < len(lista)
preciso que vc me explique essa parte do codigo, para ver quais partes vc sacou
Ok
tarefa = request.form['info'] => pegar as informações do form, que no caso, é o campo no qual eu boto as tarefas
tarefa[indice] = nome => minha ideia era pegar, na lista, de acordo com o índice, substituir pelo string:nome que eu colocar na url
@clever peak
opa
beleza
entao, request.form['info'] é o nome da tarefa com id indice, certo?
e temos uma lista de tarefas
o que vc quer é alterar um dos dados que está nessa lista
que é lista[indice]
entao o que deve ser feito é atribuir o novo nome para a tarefa da lista na posicao indice
lista[indice] é um objeto Checklist
entao lista[indice].nome é o que deve ser alterado
logo
lista[indice].nome = request.form['info']
vai pegar o nome que foi enviado pelo form e colocar na tarefa