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

Código dando erro

Fiz o código junto com o professor, porém fica dando um erro que não consigo corrigir, se alguém puder ajudar.

O código: from flask import render_template, request, redirect, session, flash, url_for from main import app, db from models import Jogos, Usuarios

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

@app.route('/cadastro') # /novo no curso def cadastro(): if 'usuario_logado' not in session or session['usuario_logado'] == None: flash('Necessário fazer login.') return redirect(url_for('login', proxima=url_for('cadastro'))) return render_template('cadastro.html', titulo='Cadastro Jogos Novos')

@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 já existe no banco de dados!')
    return redirect(url_for('index'))
else:
    novo_jogo = Jogos(nome=nome, categora=categoria, console=console)
    db.session.add(novo_jogo)
    db.session.commit()

return redirect(url_for('index'))  # coloca a função que instancia a página

@app.route('/editar/int:id') def editar(id): if 'usuario_logado' not in session or session['usuario_logado'] == None: flash('Necessário fazer login.') return redirect(url_for('login', proxima=url_for('editar'))) 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()

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(f'Usuário {usuario.nickname} Logado Com Sucesso!') # mensagem rápida proxima_pagina = request.form['proxima'] return redirect(proxima_pagina) else: flash('Usuário Não Logado!') return redirect(url_for('login'))

@app.route('/logout') def logout(): session['usuario_logado'] = None flash('Usuário Deslogado Com Sucesso!') return redirect(url_for('index'))

O erro: C:\Users\ldega\anaconda3\envs\Exercicios_Estrutura_Sequencial\lib\site-packages\flask_sqlalchemy_init__.py:872: FSADeprecationWarning: SQLALCHEMYTRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future. Set it to True or False to suppress this warning. warnings.warn(FSADeprecationWarning( Traceback (most recent call last): File "C:\Users\ldega\OneDrive\Área de Trabalho\Exercicios_Python\flaskproject\views.py", line 8, in def index(): File "C:\Users\ldega\anaconda3\envs\Exercicios_Estrutura_Sequencial\lib\site-packages\flask\scaffold.py", line 439, in decorator self.add_url_rule(rule, endpoint, f, *options) File "C:\Users\ldega\anaconda3\envs\Exercicios_Estrutura_Sequencial\lib\site-packages\flask\scaffold.py", line 57, in wrapper_func return f(self, *args, *kwargs) File "C:\Users\ldega\anaconda3\envs\Exercicios_Estrutura_Sequencial\lib\site-packages\flask\app.py", line 1090, in add_url_rule raise AssertionError( AssertionError: View function mapping is overwriting an existing endpoint function: index

1 resposta
solução!

Achei o erro, estava executando do código views.py quando deveria executar do main.py. Não sabia que tinha essa diferença, agora está aprendido!