Ajustando app.py -2

parent ad2ba986
import os
from flask import Flask, render_template, request, redirect, url_for from flask import Flask, render_template, request, redirect, url_for
from models import db, Animal from models import db, Animal
app = Flask(__name__) app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///fazenda.db'
# Configuração do caminho do banco de dados
basedir = os.path.abspath(os.path.dirname(__file__))
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'fazenda.db')
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# Inicializa o banco de dados com o app
db.init_app(app) db.init_app(app)
# Criar o banco de dados antes da primeira requisição # Cria as tabelas no banco de dados caso não existam
with app.app_context(): with app.app_context():
db.create_all() db.create_all()
# --- ROTAS DO SISTEMA ---
@app.route('/') @app.route('/')
def index(): def index():
"""Rota principal que lista todos os animais cadastrados."""
animais = Animal.query.all() animais = Animal.query.all()
return render_template('index.html', animais=animais) return render_template('index.html', animais=animais)
@app.route('/cadastrar', methods=['POST']) @app.route('/cadastrar', methods=['POST'])
def cadastrar(): def cadastrar():
"""Rota para processar o formulário de cadastro."""
nome = request.form.get('nome') nome = request.form.get('nome')
especie = request.form.get('especie') especie = request.form.get('especie')
idade = request.form.get('idade') idade = request.form.get('idade')
peso = request.form.get('peso') peso = request.form.get('peso')
# Validação básica e conversão de tipos
if nome and especie and idade and peso:
try:
novo_animal = Animal(
nome=nome,
especie=especie,
idade=int(idade),
peso=float(peso)
)
db.session.add(novo_animal)
db.session.commit()
except ValueError:
# Caso o peso ou idade não sejam números válidos
print("Erro na conversão de valores.")
novo_animal = Animal(nome=nome, especie=especie, idade=idade, peso=peso) return redirect(url_for('index'))
db.session.add(novo_animal)
@app.route('/excluir/<int:id>')
def excluir(id):
"""Rota para remover um animal (Bônus para o projeto)."""
animal = Animal.query.get_or_404(id)
db.session.delete(animal)
db.session.commit() db.session.commit()
return redirect(url_for('index')) return redirect(url_for('index'))
\ No newline at end of file
if __name__ == '__main__':
# Roda o servidor em modo debug para facilitar o desenvolvimento
app.run(debug=True)
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment