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