CRUD com Flask e Python

Salveee,

@ProgramadorPython, chará a minha pergunta é diretamente pra você.

Eu estava acompanhando a playlist de “Desenvolvimento Web com Flask e Python” e depois que cheguei na parte em que você implementa a lib “cru.js” eu simplesmente buguei… Não consegui mais acompanhar.

Isso pq eu ainda estou apredendo e até agora não aprendi nada sobre Javascript. No vídeo você fala que a utilização do cru.js é para justamente não precisarmos mexer com o Javascript para fazermos as requisições HTTP, mas há alguma outra maneira de desenvolver um CRUD com o Flask (ou qualquer outro framework) sem utilizar JS no desenvolvimento?

Link do vídeo: https://www.youtube.com/watch?v=fkXlSyWiXVg

1 curtida

Olá @guiOchagas beleza?

Resposta curta

Sim, da para desenvolver sites sem usar Javascript, mas é uma forma primitiva de programar que não vale a pena.

Resposta detalhada

Por exemplo, você consegue criar uma pagina de cadastro e enviar os dados de um formulário direto para uma rota sua no backend (Flask) sem usar o Javascript.

Lá você pega os dados, salva no banco de dados e redireciona o usuário para uma pagina (ou até mesmo a mesma pagina) com a mensagem de sucesso ou erro.

Até ai tudo bem. Você enviou uma requisição com o method POST e o seu backend vai receber os dados normalmente.

Exemplo:

app.py

from flask import Flask, request, render_template

app = Flask(__name__)

@app.route("/")
def formulario():
    return render_template('formulario.html')

@app.route('/criar-usuario', methods=['POST'])
def rota_criar_usuario():
    
    nome = request.form['nome']
    print('nome recebido', nome)

    # sua logica para criar 

    mensagem = "Usuário criado com sucesso"

    return render_template('resultado_cadastro.html', msg=mensagem)

formulario.html

<form action="{{ url_for('rota_criar_usuario') }}" method="POST">
    <input type="text" name="nome" />
    <button>Cadastrar</button>
</form>

resultado_cadastro.html

<div>{{ msg }}</div>

Mas se você quiser alterar o método de requisição para PUT por exemplo, você não pode, pois o HTML só permite POST (e GET se não me engano) na tag <form>.

Lembro que antigamente a galera colocava um <input type="hidden" name="_method" value="put"> para obter o campo _method no backend e saber se era pra criar/atualizar/deletar/obter.

Outra coisa, o grande motivo de usarmos algum tipo de Javascript ou Typescript, é pelo fato de podermos se comunicar com o backend sem necessariamente recarregar a pagina inteira novamente, pois as vezes queremos apenas atualizar uma informação pequena/simples. Ai começamos a entrar na questão de performance.

Nesse video de Flask eu acabo renderizando “miolos” - que seriam pedaços de código HTML - para incluirmos em alguma região do site.

Para fazer isso em javascript puro, você precisaria saber javascript se não fica complicado.
Por isso eu criei o cru.js.

Apenas para você incluir certas tags no HTML que por de trás dos panos são mapeadas pela minha biblioteca e interagem com backend. Mas existem bibliotecas famosas que fazem a mesma coisa, como o HTMLX. Talvez vendo outros tutoriais de XHTML você entenda melhor isso e inclusive consiga usar o que eu fiz, pois é a mesma coisa praticamente. Eu só criei o cru.js do zero porque não queria aprender com o htmlx funciona kkk

Tenta revisar essa parte que você tá com dificuldade. Mesmo que não faça muito sentido na sua cabeça agora, confia que se você entender esse conceito você vai conseguir entender os próximos, pois eles são “similares”. Vários no inicio ficam confusos, mas praticando e tentando novamente eles começam a entender. Inclusive pode trazer suas dúvidas aqui ou no Discord (que a galera ajuda mais) que eu vou te ajudando.

Abraços espero ter ajudado!
Qualquer coisa pode comentar ai, tmj e bom final de ano :smiley: