1
resposta

Faça como eu fiz: concluindo o CRUD

views.py

from flask import render_template, request, redirect, session, flash, url_for
from jogoteca import app, db
from models import Jogos, Usuarios


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


@app.route("/inicio")
def ola():
    lista = Jogos.query.order_by(Jogos.id)
    return render_template("lista.html", titulo="Jogos", jogos=lista)


@app.route("/novo")
def novo():
    if "usuario_logado" not in session or (session["usuario_logado"] is None):
        return redirect(url_for("login", proxima=url_for("novo")))
    return render_template("novo.html", titulo="Novo Jogo")


@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á existente")
        return redirect(url_for("index"))

    novo_jogo = Jogos(nome=nome, categoria=categoria, console=console)
    db.session.add(novo_jogo)
    db.session.commit()

    return redirect(url_for("index"))


@app.route("/editar/<int:id>")
def editar(id):
    if "usuario_logado" not in session or (session["usuario_logado"] is None):
        return redirect(url_for("login", proxima=url_for("editar", id=id)))
    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("/deletar/<int:id>")
def deletar(id):
    if "usuario_logado" not in session or (session["usuario_logado"] is None):
        return redirect(url_for("login"))
    Jogos.query.filter_by(id=id).delete()
    db.session.commit()
    flash("Jogo deletado com sucesso")

    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(usuario.nickname + ' logado com sucesso!')
            proxima_pagina = request.form['proxima']
            return redirect(proxima_pagina)
        else:
            flash("Senha incorreta")
            return redirect(url_for("login"))
    else:
        flash("Usuario não logado")
        return redirect(url_for("login"))


@app.route("/logout")
def logout():
    session["usuario_logado"] = None
    flash("Logout efetuado com sucesso!")
    return redirect(url_for("index"))
1 resposta

Olá, Henrique!

Muito obrigado por compartilhar o seu código aqui com a gente.

O código que você postou parece estar implementando corretamente as operações de CRUD (Create, Read, Update, Delete) para a aplicação Jogoteca. Ele inclui rotas para listar os jogos (index e ola), adicionar um novo jogo (novo e criar), editar um jogo existente (editar e atualizar) e deletar um jogo (deletar). Além disso, também tem rotas para autenticação de usuário (login, autenticar e logout).

Parabéns, continue assim, praticando e evoluindo.

Espero ter ajudado e bons estudos!