1
resposta

[Dúvida] A estrutura não muda

Mesmo fazendo tudo com descrito, a estrutura da rota "editar" não muda...

{% extends "template.html" %}
{% block conteudo %}
      <form class="formularioJogo" action="{{ url_for('criar') }}" method="post" enctype="multipart/form-data">

        <figure class="img thumbnail col-md-4 formularioImagem">
          <img class="img-fluid" src="{{ url_for('imagem', nome_arquivo=capa_jogo) }}">
          <figcaption class="fileContainer">
            <label>
              Mudar Capa
              <input type="file" name="arquivo" accept=".jpg">
            </label>
          </figcaption>
        </figure>

        <fieldset>
          <input type="hidden" name="id" value="{{ id }}">
          {{ form.csrf_token }}
          <div class="form-group inputBox">
            {{ form.nome.label(class="form-label") }}
            {{ form.nome(class="form-control") }}
          </div>
          <div class="form-group inputBox">
            {{ form.categoria.label(class="form-label") }}
            {{ form.categoria(class="form-control") }}
          </div>
          <div class="form-group inputBox">
            {{ form.console.label(class="form-label") }}
            {{ form.console(class="form-control") }}
          </div>
          <div class="form-group Buttons">
            {{ form.salvar(class="btn btn-primary") }}
            <a class="btn btn-danger" href="{{ url_for('index') }}"> Cancelar </a>
          </div>
        </fieldset>
      </form>
{% endblock %}
1 resposta

Beleza?

A estrutura que você postou está usando a rota action="{{ url_for('criar') }}", ou seja, está enviando os dados para a função criar, não para a função editar. Isso provavelmente é o motivo de a estrutura não mudar quando você tenta editar.

Para transformar esse formulário em um formulário de edição, você deve alterar essa linha:

<form class="formularioJogo" action="{{ url_for('criar') }}" method="post" enctype="multipart/form-data">

Para:

<form class="formularioJogo" action="{{ url_for('editar', id=id) }}" method="post" enctype="multipart/form-data">

Desde que no seu app.py você tenha uma rota parecida com isso:

@app.route('/editar/<int:id>', methods=['GET', 'POST'])
def editar(id):
    # lógica da edição aqui

Verifique também:

  • Se a função editar está devidamente criada no seu arquivo Python (app.py ou equivalente).
  • Se o nome da rota no url_for bate com o nome da função Python (editar).
  • Se está passando corretamente o id do item que quer editar.

Se quiser, manda o projeto completo aí.