Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Não estou conseguindo salvar imagem em uploads

Ao tentar carregar a imagem no site volto para ver se ela foi salva em uploads porém a pasta consta como vazia.

from flask import render_template,request, redirect, session,flash, url_for
from jogoteca import app, db
from models import Jogos,Usuarios

@app.route('/')
def index():
    lista = Jogos.query.order_by(Jogos.id)
    return render_template('lista.html', titulo='Jogos', jogos= lista)

@app.route('/novo')
def novo():
    if 'usuario_logado' not in session or session['usuario_logado'] == None:
        flash('É nescessario realizar o login')
        return redirect(url_for('login', proxima=url_for('novo')))
    return render_template('novo.html', titulo = 'Novo jogo')

@app.route('/criar', methods = ['POST',])
def criar():
   nome = request.form['nome']
   categoria = request.form['categoria']
   console = request.form['console']

   jogo = Jogos.query.filter_by(nome = nome).first()
   if jogo:
       flash(jogo.nome+ 'já foi inserido!')
       return redirect(url_for('index'))

   novo_jogo = Jogos(nome = nome, categoria = categoria, console = console)
   db.session.add(novo_jogo)
   db.session.commit()

   return redirect(url_for('index'))

@app.route('/editar/<int:id>')
def editar(id):
    if 'usuario_logado' not in session or session['usuario_logado'] == None:
        return redirect(url_for('login', proxima=url_for('editar', id= id)))
    jogo = Jogos.query.filter_by(id = id).first()
    return render_template('editar.html', titulo = 'Editando Jogo', jogo = jogo)

@app.route('/atualizar', methods = ['POST',])
def atualizar():
    jogo = Jogos.query.filter_by(id = request.form['id']).first()
    jogo.nome = request.form['nome']
    jogo.categoria = request.form['categoria']
    jogo.console = request.form['console']

    db.session.add(jogo)
    db.session.commit()

    arquivo = request.files['arquivo']
    arquivo.save(f'uploads/{arquivo.filename}')

    return redirect( url_for('index'))

@app.route('/deletar/<int:id>')
def deletar(id):
    if 'usuario_logado' not in session or session['usuario_logado'] == None:
        flash('É nescessario realizar o login')
        return redirect(url_for('login', id = id))
    Jogos.query.filter_by(id = id).delete()
    db.session.commit()
    flash('Jogo deletado com sucesso!')

    return redirect(url_for('index'))

@app.route('/login')
def login():
    proxima = request.args.get('proxima')
    return render_template('login.html', proxima = proxima)


@app.route('/autenticar', methods=['POST',])
def autenticar():
    usuario = Usuarios.query.filter_by(nickname =request.form['usuario']).first()
    if usuario:
        if request.form['senha'] == usuario.senha:
            session ['usuario_logado'] = usuario.nickname
            flash(usuario.nickname + ' logado com sucesso!')
            proxima_pagina = request.form['proxima']
            return redirect(proxima_pagina)
    else:
        flash('Usuario incorreto')
        return redirect(url_for('login'))

@app.route('/logout')
def logout():
    session['usuario_logado'] = None
    flash('Logout efetuado com sucesso')
    return redirect(url_for('index'))
{% extends "template.html"%}
{% block conteudo %}
      <form action="{{ url_for('criar') }}" method="post" enctype="multipart/form-data">
        <input type="file" name="arquivo" accept=".jpg">
        <fieldset>
          <div class="form-group">
            <label for="nome">Nome</label>
            <input type="text" id="nome" name="nome" class="form-control">
          </div>
          <div class="form-group">
            <label for="categoria">Categoria</label>
            <input type="text" id="categoria" name="categoria" class="form-control">
          </div>
          <div class="form-group">
            <label for="console">Console</label>
            <input type="text" id="console" name="console" class="form-control">
          </div>
          <button type="submit" class="btn btn-primary btn-salvar">Salvar</button>
        </fieldset>
      </form>
{% endblock %}
1 resposta
solução!

Olá, descobri o problema é que escrevi o código de requisição do 'arquivo' na rota /editar e na verdade seria para estar na rota /criar.