Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Não consigo fazer o mesmo no editar

na função "editar", se você não estiver logado da erro e não faz o que a mesma coisa que a função "novo".

def editar(id):
    if 'usuario_logado' not in session or session['usuario_logado'] == None:
        return redirect(url_for('login', proxima=url_for('editar')))
    jogo = jogo_dao.busca_por_id(id)
    nome_imagem = recupera_imagem(id)
    return render_template('editar.html', titulo='Editando Jogo', jogo=jogo, capa_jogo=nome_imagem)
4 respostas

Oi Alan, não sou um pythonzeiro como dizem, mas pelo que entendi, seu if faz exatamente isso, se não estiver logado, ele redireciona para a página de login.

Que erro está aparecendo pra você?

Está dando esse erro:

jinja2.exceptions.UndefinedError: 'consultor' is undefined

Código editar.html

{% extends "template.html" %}
{% block conteudo %}
      <form action="{{ url_for('atualizar') }}" method="post" enctype="multipart/form-data">
        <input type="hidden" name="id" value="{{ consultor.id }}">
          <fieldset>
            <div class="form-group">
              <label for="nome">Nome</label>
              <input type="text" id="nome" name="nome" class="form-control" value="{{ consultor.nome }}">
            </div>
            <div class="form-group">
              <label for="equipe">Equipe</label>
              <input type="text" id="equipe" name="equipe" class="form-control" value="{{ consultor.equipe }}">
            </div>
              <button type="submit" class="btn btn-primary btn-salvar">Salvar</button>
              <a class="btn btn-danger" href="{{ url_for('index') }}">Voltar</a>
          </fieldset>
      </form>
{% endblock %}

Código view.py

@app.route('/editar/<int:id>')
def editar(id):

    if 'usuario_logado' not in session or session['usuario_logado'] == None:
        return redirect('/login')
    return render_template('editar.html', titulo='Editando Jogo')

o erro no login eu consegui funcionar

solução!

Olá Alan,

Está faltando no seu código buscar o consultor que está sendo editado, algo como isso:

@app.route('/editar/<int:id>')
def editar(id):
    if 'usuario_logado' not in session or session['usuario_logado'] == None:
        return redirect('/login')

    # Pega o consultor que vai ser editado
    consultor = consultor_dao.busca_por_id(id)

    # Passa o consutor para a view
    return render_template('editar.html', titulo='Editando Jogo', consultor=consultor)

Você pode ver que na sua view existe a variável consultor em vários lugares, o que faltava era você buscar essa variável e passar para a view.

Obrigado cara, eu tinha mudado o código e nem tinha percebido que retirei essa parte, obrigado, voltou tudo ao normal