Creating a website for vehicle management - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: Homework (https://python-forum.io/forum-9.html) +--- Thread: Creating a website for vehicle management (/thread-41582.html) |
Creating a website for vehicle management - Sergio - Feb-11-2024 Hey people. I'm doing my final project and i'm having a problem. I'm creating a website and for now i'm dealing with the fact that it does not show what's in the column 'nome_marca' 'nome_categoria' 'nome_tipo' and 'nome_modelo'. These columns are in a database in SQL lite in their respective tables (MarcaVeiculos, CategoriaVeiculos, TipoVeiculos and ModeloVeiculos respectively). Then i have a table named Veiculos where the 'id' column of each table is a foreign key, aggregating the data in that final column (Veiculos). I was only able to make it show the numbers in the 'id_marca' for example or nothing at all. I would apprecciate your help. This is the code i have so far: import flask from flask import flash from flask import Flask, render_template, request, redirect, url_for from flask_sqlalchemy import SQLAlchemy from flask_login import LoginManager, UserMixin, login_user, login_required, logout_user, current_user from werkzeug.security import check_password_hash, generate_password_hash from datetime import datetime app = Flask(__name__) app.config["DEBUG"] = True app.config['SQLALCHEMY_DATABASE_URI'] = "sqlite:///../database/veiculos.db" app.config['SECRET_KEY'] = 'random1994' db = SQLAlchemy(app) login_manager = LoginManager(app) login_manager.login_view = 'login' @app.route('/', methods=['GET']) def home(): veiculos = Veiculos.query.all() return render_template("index.html", veiculos=veiculos) class User(db.Model, UserMixin): id = db.Column(db.Integer, primary_key=True) email = db.Column(db.String(120), unique=True, nullable=False) password = db.Column(db.String(120), nullable=False) class MarcaVeiculos(db.Model): id_marca = db.Column(db.Integer, primary_key=True) nome_marca = db.Column(db.String(255), nullable=False) class CategoriaVeiculos(db.Model): id_categoria = db.Column(db.Integer, primary_key=True) nome_categoria = db.Column(db.String(255), nullable=False) class TipoVeiculos(db.Model): id_tipo = db.Column(db.Integer, primary_key=True) nome_tipo = db.Column(db.String(255), nullable=False) class ModeloVeiculos(db.Model): id_modelo = db.Column(db.Integer, primary_key=True) nome_modelo = db.Column(db.String(255), nullable=False) class Transmissao(db.Model): id_transmissao = db.Column(db.Integer, primary_key=True) nome_transmissao = db.Column(db.String(255), nullable=False) class Veiculos(db.Model): id_veiculo = db.Column(db.Integer, primary_key=True) id_marca = db.Column(db.Integer, db.ForeignKey('marca_veiculos.id_marca'), nullable=False) id_modelo = db.Column(db.Integer, db.ForeignKey('modelo_veiculos.id_modelo'), nullable=False) id_categoria = db.Column(db.Integer, db.ForeignKey('categoria_veiculos.id_categoria'), nullable=False) id_tipo = db.Column(db.Integer, db.ForeignKey('tipo_veiculos.id_tipo'), nullable=False) id_transmissao = db.Column(db.Integer, db.ForeignKey('transmissao.id_transmissao'), nullable=False) quantidade_pessoas = db.Column(db.Integer, nullable=False) imagem_veiculo = db.Column(db.String(255)) valor_diario = db.Column(db.Float, nullable=False) data_ultima_revisao = db.Column(db.Date) data_proxima_revisao = db.Column(db.Date) data_ultima_legalizacao = db.Column(db.Date) marca = db.relationship('MarcaVeiculos', foreign_keys='Veiculos.id_marca', backref='veiculos', lazy=True) modelo = db.relationship('ModeloVeiculos', foreign_keys='Veiculos.id_modelo', backref='veiculos', lazy=True) categoria = db.relationship('CategoriaVeiculos', foreign_keys='Veiculos.id_categoria', backref='veiculos', lazy=True) tipo = db.relationship('TipoVeiculos', foreign_keys='Veiculos.id_tipo', backref='veiculos', lazy=True) transmissao = db.relationship('Transmissao', foreign_keys='Veiculos.id_transmissao', backref='veiculos', lazy=True) class Reservas(db.Model): id_reserva = db.Column(db.Integer, primary_key=True) id_cliente = db.Column(db.Integer, db.ForeignKey('usuario.id'), nullable=False) id_veiculo = db.Column(db.Integer, db.ForeignKey('veiculos.id_veiculo'), nullable=False) data_inicio = db.Column(db.Date, nullable=False) data_fim = db.Column(db.Date, nullable=False) valor_total = db.Column(db.Float) metodo_pagamento = db.Column(db.String(50), nullable=False) veiculo = db.relationship('Veiculos', foreign_keys='Reservas.id_veiculo', backref='reservas', lazy=True) def calcular_valor_total(self): dias_reserva = (self.data_fim - self.data_inicio).days + 1 veiculo = Veiculos.query.get(self.id_veiculo) self.valor_total = dias_reserva * veiculo.valor_diario @login_manager.user_loader def load_user(user_id): return User.query.get(int(user_id)) def obter_marcas(): marcas = MarcaVeiculos.query.all() return marcas def obter_categorias(): categorias = CategoriaVeiculos.query.all() return categorias def obter_tipos(): tipos = TipoVeiculos.query.all() return tipos def obter_modelos(): modelos = ModeloVeiculos.query.all() return modelos def obter_transmissao(): transmissao = Transmissao.query.all() return transmissao @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': email = request.form['email'] senha = request.form['senha'] usuario = User.query.filter_by(email=email).first() if usuario and check_password_hash(usuario.password, senha): login_user(usuario) flash('Login bem-sucedido!', 'success') return redirect(url_for('obter_filtros')) else: flash('Falha no login. Verifique seu email e senha.', 'danger') return render_template('login.html') @app.route('/logout') @login_required def logout(): logout_user() flash('Logout bem-sucedido!', 'success') return redirect(url_for('obter_filtros')) @app.route('/filtros', methods=['GET']) def obter_filtros(): marcas = obter_marcas() categorias = obter_categorias() tipos = obter_tipos() modelos = obter_modelos() transmissao = obter_transmissao() return render_template("filtros.html", marcas=marcas, categorias=categorias, tipos=tipos, modelos=modelos,transmissao=transmissao) @app.route('/reservar', methods=['GET', 'POST']) @login_required def reservar(): if request.method == 'POST': data_inicio_str = request.form['data_inicio'] data_fim_str = request.form['data_fim'] metodo_pagamento = request.form['metodo_pagamento'] try: data_inicio = datetime.strptime(data_inicio_str, '%Y-%m-%d').date() data_fim = datetime.strptime(data_fim_str, '%Y-%m-%d').date() reserva = Reservas( id_cliente=current_user.id, id_veiculo=1, data_inicio=data_inicio, data_fim=data_fim, valor_total=0, metodo_pagamento=metodo_pagamento ) reserva.calcular_valor_total() db.session.add(reserva) db.session.commit() flash('Reserva bem-sucedida!', 'success') return redirect(url_for('minhas_reservas')) except ValueError: flash('Erro: Data inválida. Certifique-se de usar o formato YYYY-MM-DD.', 'danger') return render_template('reservation.html') @app.route('/minhas_reservas') @login_required def minhas_reservas(): reservas = Reservas.query.filter_by(id_cliente=current_user.id).all() return render_template('minhas_reservas.html', reservas=reservas) if __name__ == "__main__": with app.app_context(): db.create_all() app.run()I also have this in my index.html file:
RE: Creating a website for vehicle management - Pedroski55 - Feb-12-2024 Do you know phpMyAdmin? phpMyAdmin is a programme for interacting with your database. phpMyAdmin runs in your web-browser and connects you with your database. The standard listening port for MySQL is 3306. You can get phpMyAdmin here. Then you can open your database, check it, make sure the data you want is actually in the database, try out the SQL queries you want to use, make sure they work, then try to implement them in Python. |