Estou com problema de ao preeencher as informações do jogo para ser colocado na lista. Já estou no final do projeto e acho que comi mosca em alguma hora de testar... Já voltei e revi o código, achei alguns errinhos mas ainda não consegui descobri o que perdi.
Acho que ainda tenho um pouco de dificuldade com POST e GET... D:
Vou deixar os códigos aqui abaixo.
Agradeço muitíssimo desde já!
(jogoteca.py)
from flask import Flask, render_template, request, redirect, session, flash, url_for
class Jogo:
def __init__(self, nome, categoria, console):
self.nome = nome
self.categoria = categoria
self.console = console
class Usuario:
def __init__(self, id, nome, senha):
self.id = id
self.nome = nome
self.senha = senha
app = Flask(__name__) # Cria uma instância do Flask - referência nesse próprio arquivo
app.secret_key = 'mamou' # Chave secreta para o Flask
lista_jogos = [
Jogo('Super Mario', 'Ação', 'SNES'),
Jogo('Pokemon Gold', 'RPG', 'GBA'),
Jogo('Mortal Kombat', 'Luta', 'SNES'),
Jogo('Zelda', 'Aventura', 'SNES')
]
usuarios = {
'admin': Usuario('admin', 'admin', 'admin'),
'jose': Usuario('jose', 'jose', '1234'),
'maria': Usuario('maria', 'maria', '4321')
}
designPATH = 'static/bootstrap.css'
@app.route('/') # Define a rota para a página inicial
def index(): # Função que será executada quando a rota for acessada
return render_template('lista.html', titulo="Jogos", jogos=lista_jogos,
design=designPATH) # Retorna o conteúdo da página home.html
@app.route('/cadastro') # Define a rota para a página cadastro
def cadastro():
if 'usuario_logado' not in session or session['usuario_logado'] is None:
return redirect(url_for('login', proxima=url_for('cadastro')))
return render_template('cadastro.html', titulo="Cadastro de Jogo") # Retorna o conteúdo da página cadastro.html
@app.route('/criar', methods=['POST', ])
def criar():
nome = request.form['nome']
categoria = request.form['categoria']
console = request.form['console']
jogo = Jogo(nome, categoria, console)
lista_jogos.append(jogo)
return redirect(url_for('index'))
@app.route('/login')
def login():
proxima = request.args.get('proxima')
return render_template('login.html', titulo="Faça seu login", proxima=proxima)
@app.route('/auth', methods=['POST', ])
def auth():
if request.form['usuario'] in usuarios:
user = usuarios[request.form['usuario']]
if request.form['senha'] == user.senha:
session['usuario_logado'] = user.id
flash(user.id + ' logou com sucesso!')
prox_pagina = request.form['proxima']
return redirect(prox_pagina)
else:
flash('Não logado, tente novamente!')
return redirect(url_for('login'))
@app.route('/logout')
def logout():
session['usuario_logado'] = None
flash('Logout efetuado com successo!')
return redirect(url_for('index'))
app.run(debug=True) # Inicia o servidor web do Flask
(template.html)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Jogoteca</title>
<link rel="stylesheet" href="{{ url_for('static', filename='bootstrap.css') }}">
</head>
<body>
<div class="container">
{% with messages = get_flashed_messages() %}
{% if messages %}
<ul id="messages" class="list-unstyled">
{% for message in messages %}
<li class="alert alert-success">{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
{% endwith %}
<div class="page-header">
<h1>{{ titulo }}</h1>
</div>
{% block conteudo %}
{% endblock %}
</div>
</body>
</html>
(cadastro.html)
{% extends 'template.html' %}
{% block conteudo %}
<form method="post" action="{{ url_for('cadastro') }}">
<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 %}