Artigo
· Jun. 5 5min de leitura

Usando Django e Vue.js para criar uma aplicação web no IRIS: Explorando o framework Django

Por muito tempo, eu quis aprender o framework Django, mas sempre surgia algum projeto mais urgente que acabava tomando prioridade. Como muitos desenvolvedores, eu uso Python para projetos de machine learning, mas quando comecei a aprender programação para web, o PHP ainda dominava. Então, quando precisei escolher um framework mais robusto para criar aplicações web e publicar meu trabalho de machine learning, acabei voltando para o PHP. Durante um tempo, utilizei o framework Laravel para construir meus sites, e foi com ele que conheci o padrão Model-View-Controller (MVC) moderno de programação web. Para deixar as coisas ainda mais complexas, gosto de desenvolver o front-end usando um framework moderno de JavaScript. O que eu mais domino é o Vue.js, então mantive essa escolha nesse projeto — embora seja mais comum ver as pessoas usando React.

Por que usar um framework complexo afinal? Quais os maiores desafios de aprender um framework como Django, Laravel, React ou Vue?

Cada um tem sua resposta para isso, mas eu passei a gostar de frameworks MVC porque eles oferecem uma estrutura clara para organizar o projeto. Isso me evita ter que reinventar a roda toda vez. No começo, esses frameworks podem parecer restritivos e confusos, mas, depois que você se familiariza com a estrutura, fica mais fácil adicionar novas funcionalidades.

O desafio é que as coisas podem até ficar “simples demais”. Frameworks como o Django usam muitas convenções e atalhos, baseados em conceitos comuns, mas com nomes e estruturas específicas. No meu projeto, por exemplo, o Django gerencia as APIs e todo o roteamento web. Se quero adicionar um novo endpoint de API, preciso criar uma função no arquivo views.py, depois ir até o urls.py e adicionar uma instrução para importar essa função e outra para definir a URL onde esse endpoint estará disponível. Depois disso, preciso editar meu componente Vue para, via JavaScript, consultar esse endpoint, exibir os dados ou manipulá-los para o usuário.

Depois que o projeto está configurado, adicionar novas funcionalidades é rápido. Basta incluir umas quatro linhas de código e posso focar na lógica da função nova no views.py para processar a requisição HTTP e devolver os dados em JSON. O mais desafiador é entender como esses arquivos funcionam juntos para formar a aplicação como um todo.

Eu encontrei a melhor maneira de aprender um frameowork com Django, basicamente, é encontrar um projeto funcionando e começar a fazer pequenas alterações para entender o fluxo dos dados. Consultar a documentação conforme os conceitos vão ficando mais claros e pedir para modelos de IA explicarem trechos de código e a função dos arquivos padrão de um framework ajuda muito. Logo fica evidente que essas ferramentas surgiram justamente para poupar tempo no longo prazo e facilitar a manutenção e atualização das aplicações. Como Django e Vue seguem estruturas padronizadas, quando você volta a trabalhar neles depois de um tempo, fica mais fácil entender o que foi feito e retomar o ritmo. E também é mais simples pegar um projeto de outra pessoa e entender as funções principais, já que a estrutura básica é familiar. 

Conceitos fundamentais de Django

Para quem está começando, a primeira coisa importante é saber que os projetos Django são criados rodando um comando que gera os arquivos e pastas base para iniciar o desenvolvimento. Essa estrutura inicial inclui alguns arquivos de configuração que se aplicam ao projeto inteiro. Os dois mais importantes e que você vai visitar com frequência são:

  • settings.py — onde ficam as configurações do projeto (se você perguntar “onde o Django configura o diretório de arquivos estáticos?”, a resposta está aqui)
  • urls.py — onde você registra as rotas de URL da aplicação.

Além desses arquivos no nível do projeto, você cria apps dentro dele, que são pastas onde fica o código de cada funcionalidade específica. Esses apps precisam ser registrados no settings.py. No meu projeto, o app principal se chama documents. Dentro dele, tenho:

  • models.py — onde defino meu objeto Document e seus campos. O Django se encarrega de criar a tabela correspondente no banco IRIS.
  • serializer.py — onde defino como converter o objeto para JSON e vice-versa. Para casos simples, isso é bem direto.
  • views.py — onde ficam as funções que recebem requisições HTTP e devolvem dados (pode ser uma resposta completa ou JSON, se for uma API).

O views.py é onde está a “graça” do Django: ele permite entregar páginas inteiras ou apenas JSON, de modo que você pode usar o Django tanto como front-end quanto apenas como back-end para um front separado.

No começo, seguir essas convenções pode parecer trabalhoso, mas logo você percebe que a aplicação simplesmente funciona, recebe as requisições e devolve os dados certos. Isso torna muito prazeroso continuar adicionando recursos. Depois que você cria um objeto, uma rota web e uma função para lidar com uma requisição, percebe como é fácil adicionar outra, e outra…

Meu projeto de exemplo

Eu fiz um fork do projeto Iris Django Template criado pelo @Guillaume Rongier no GitHub:
https://github.com/grongierisc/iris-django-template

Esse template contém apenas o Django e foi extremamente útil para eu aprender. A principal melhoria que adicionei foi integrar o Vue.js com Tailwind CSS, mostrando que dá para usar um framework moderno de JavaScript junto com Django e rodar uma Single Page Application (SPA) no IRIS. Uma SPA é uma aplicação JavaScript que faz requisições XHR para obter JSON e atualiza a página sem recarregar tudo — algo comum no desenvolvimento web moderno.

Convido você a olhar meu projeto não só como um exemplo de RAG e Vector Stores no IRIS, mas também como um template para usar Django, Vue.js e Tailwind CSS para criar aplicações web modernas, rápidas e flexíveis sobre o IRIS.
https://github.com/mindfulcoder49/iris-django-template

Fico à disposição para responder dúvidas ou compartilhar insights com quem quiser adaptar esse projeto para seu próprio uso.

Discussão (0)1
Entre ou crie uma conta para continuar