Estou com problema na hora de atualizar o cliente,quando eu clico no botão de salvar me traz um erro 405, me parece que ele critica o método PUT (estou usando o cru.js)
codigo da pagina form_cliente.html:
<form class="c-form"
{% if clinete %}
action="{{ url_for('cliente.atualizar_cliente',cliente_id=cliente.id) }}"
{% else %}
action="{{ url_for('cliente.inserir_cliente') }}"
{% endif %}
method="{% if cliente %}PUT{% else %}POST{% endif %}"
c-append="#lista-clientes">
<div class="mb-3">
<label class="form-label">Nome</label>
<input type="text" class="form-control" name="nome" {% if cliente %}value="{{cliente.nome}}"{% endif %}>
</div>
<div class="mb-3">
<label class="form-label">E-mail</label>
<input type="email" class="form-control" name="email" {% if cliente %}value="{{cliente.email}}"{% endif %}>
</div>
<button type="submit" class="btn btn-primary">
{% if cliente %}Salvar{% else %}Criar{% endif %}
</button>
</form>
codigo cliente.py:
from flask import Blueprint, render_template, request
from database.cliente import CLIENTES
cliente_route = Blueprint('cliente',__name__)
#Listar os clientes
@cliente_route.route('/')
def lista_clientes():
return render_template('lista_clientes.html',clientes=CLIENTES)
#Inserir os dados do cliente
@cliente_route.route('/',methods=['POST'])
def inserir_cliente():
data = request.json
novo_usuario = {
"id": len(CLIENTES) + 1,
"nome": data['nome'],
"email": data['email']
}
CLIENTES.append(novo_usuario)
return render_template('item_cliente.html',cliente=novo_usuario)
#Formulario para cadastrar um cliente
@cliente_route.route('/new')
def form_cliente():
return render_template('form_cliente.html')
#Exibir detalhes do cliente
@cliente_route.route('/<int:cliente_id>')
def detalhe_cliente(cliente_id):
return render_template('detalhe_cliente.html')
#Formulario para editar um cliente
@cliente_route.route('/<int:cliente_id>/edit')
def form_edit_cliente(cliente_id):
cliente = None
for c in CLIENTES:
if c['id'] == cliente_id:
cliente = c
return render_template('form_cliente.html',cliente=cliente)
#Formulario para atualizar um cliente
@cliente_route.route('/<int:cliente_id>/update',methods=['PUT'])
def atualizar_cliente(cliente_id):
cliente_editado = None
data = request.json
for c in CLIENTES:
if c['id'] == cliente_id:
c['nome'] = data['nome']
c['email'] = data['email']
cliente_editado = c
return render_template('item_cliente.html',cliente= cliente_editado)
#Formulario para deletar um cliente
@cliente_route.route('/<int:cliente_id>/delete',methods=['DELETE'])
def deletar_cliente(cliente_id):
global CLIENTES
CLIENTES = [ c for c in CLIENTES if c['id'] != cliente_id]
return {'deleted': 'ok'}