Voltar ao blog

Criando Modelos Django: Um Tutorial

Criando Modelos Django: Um Tutorial

Django é um framework web bem conhecido para o desenvolvimento rápido de sites e aplicativos web seguros e de fácil manutenção. Construído usando Python, o Django simplifica o desenvolvimento web, permitindo mais tempo e foco na escrita de aplicativos sem reinventar a roda a cada momento. O Django é um projeto gratuito e de código aberto com documentação oficial robusta, excelente suporte da comunidade e bastante suporte gratuito e pago.

Neste guia, vamos mergulhar na criação de modelos do Django. No Django, um modelo é a principal fonte de informações sobre seus dados. Os modelos descrevem os campos e o comportamento dos dados a serem armazenados. O Django usa o modelo para gerar as tabelas do banco de dados usando ORM (Object Relational Mapping), também referidos como modelos.

Pré-requisitos

Estamos trabalhando em um sistema operacional baseado em Unix, de preferência um servidor em nuvem Ubuntu 20.04 como o sistema no qual testamos. Se você deseja configurar o Django em um ambiente semelhante, consulte nosso tutorial, “Como Instalar o Django e Configurar um Ambiente de Desenvolvimento no Ubuntu 20.04.”

Passo 1. Ambiente de Desenvolvimento Python

O Django é construído em Python. Portanto, precisamos de um ambiente de desenvolvimento Python robusto com todas as ferramentas necessárias para trabalhar com aplicativos Python. Já discutimos isso em um guia dedicado. Aqui, faremos uma breve demonstração.

Primeiro, abra um terminal e execute os seguintes comandos:

Em seguida, instale o pip – o gerenciador de pacotes do Python:

Depois, instale alguns pacotes de desenvolvimento adicionais:

Django Models 1

Para estabelecer um ambiente virtual, também precisamos do módulo Python venv :

Passo 2. Instalando o Servidor MySQL

O MySQL é um sistema de gerenciamento de banco de dados relacional popular. É de código aberto, estável e rico em recursos. Usaremos o MySQL como o servidor de banco de dados para o nosso aplicativo Django. Instale o MySQL usando o APT:

Em seguida, verifique a instalação:

Django Models 2

É apenas uma configuração básica do MySQL com as opções padrão. Confira o guia mais detalhado sobre instalação e configuração do MySQL.

Passo 3. Configurando o Aplicativo Django

Agora estamos prontos para criar nosso aplicativo Django. Se você estiver interessado em uma demonstração mais detalhada do Django, consulte nosso tutorial, “Instalando o Framework Web Django no Ubuntu 20.04.”

Em seguida, crie um diretório dedicado para o aplicativo. O nome do diretório deve refletir o nome do projeto:

Dentro do diretório do projeto, crie um ambiente virtual Python usando o venv módulo:

Ative o ambiente virtual:

Django Models 3

Instale o Django usando o pip:

Em seguida, crie um novo projeto Django usando o django-admin comando:

django-admin

Passo 4. Configurando o Aplicativo Django

O aplicativo Django contém todas as configurações padrão. Para o nosso objetivo, precisamos fazer alguns ajustes.

Comece editando o arquivo de configuração settings.py:

Depois, altere o fuso horário:

TIME_ZONE

Adicione as máquinas que têm permissão para acessar o servidor do aplicativo Django:

ALLOWED_HOSTS

Depois disso, aplique as alterações:

Django Models 4

Finalmente, crie um superusuário para o nosso aplicativo web Django:

python manage.py

Passo 5. Conectando o App Django ao MySQL

Para nos conectarmos ao MySQL, precisamos de uma biblioteca de conector Python adicional que seja compatível com o Django. Usaremos o mysqlclient.

Primeiro, certifique-se de que temos os pacotes necessários instalados:

python3-dev

Em seguida, instale o mysqlclient:

  • Criando um Banco de Dados Dedicado

Para o nosso app, precisamos criar um banco de dados dedicado e um usuário de banco de dados. Inicie o shell do MySQL como root:

sudo mysql -u rootCrie um banco de dados dedicado para o nosso app Django:

Depois, crie um usuário de banco de dados dedicado para o app Django:

Finalmente, conceda ao usuário dedicado permissão total no banco de dados dedicado:

GRANT ALL ON
  • Alterando a Configuração do Django para usar o MySQL

Agora, precisamos ajustar algumas configurações do Django para que ele possa usar o MySQL como servidor de banco de dados. Abra o settings.py em um editor de texto:

Role para baixo até a seção DATABASES e cole o seguinte código:

DATABASES

Em seguida, edite o arquivo de configuração do MySQL para que ele contenha as credenciais de banco de dados necessárias:

Adicione o seguinte bloco no final do arquivo:

Django Models 5

Reinicie o MySQL para que as alterações entrem em vigor:

Passo 6. Criando um Model do Django

Agora estamos prontos para criar um novo model dentro do nosso projeto Django. Ative o ambiente virtual:

Neste local, diga ao Django para criar um novo app:

Após a criação, a árvore de arquivos deve se parecer com isto. Aqui, o arquivo models.py conterá os códigos para o nosso model personalizado do Django:

Django Models 6

Verifique o conteúdo atual do arquivo:

cat models.py

Para demonstração, vamos criar um model para posts de blog chamado Post. Ele conterá os seguintes campos:

  • title: Título do post do blog.
  • slug: Armazena e gera URLs válidas para páginas web.
  • content: O texto do post do blog.
  • created_on: Data de criação do post.
  • author: O usuário que criou o post.

Abra o arquivo models.py em um editor de texto:

Vamos importar algumas APIs necessárias para o nosso model. Por padrão, ele importa a API de models. Também precisaremos da API slugify para gerar slugs, User para autenticação, e reverse para uma criação de URL melhor e mais flexível:

Em seguida, adicione o método de classe chamado Post. Ele conterá os campos de banco de dados necessários como title, slug, content, created_on, e author:

Precisamos da funcionalidade para geração de URL e salvamento do post. É importante, pois gera links exclusivos correspondentes a posts exclusivos:

A próxima seção informará ao modelo sobre a ordenação do post e sua exibição na página web. Codificaremos a lógica usando uma classe interna, Meta. Ela conterá lógica de modelo adicional que não diz respeito à definição de campos do banco de dados:

Finalmente, teremos o recurso do modelo Comment neste arquivo. Isso requer a adição de outra classe Comment usando models.Model como sua assinatura. Ele conterá os seguintes campos de banco de dados:

  • name: Nome do autor do comentário.
  • email: Endereço de e-mail do autor do comentário.
  • text: Conteúdo do próprio comentário.
  • post: O post no qual o comentário foi feito.
  • created_on: Momento da criação do comentário.

O código será parecido com isto:

Neste ponto, nosso arquivo models.py ficará assim:

models.py

Finalmente, salve o arquivo e feche o editor.

Passo 7. Atualizando as Configurações do Django

O modelo está criado. No entanto, precisamos ajustar alguns arquivos de configuração para colocar o modelo em ação. Dentro de settings.py, precisamos adicionar nosso modelo sob INSTALLED_APPS.

Abra settings.py em um editor de texto:

Registre o novo módulo sob a seção INSTALLED_APPS:

INSTALLED_APPS

Salve o arquivo e feche o editor.

Passo 8. Migrando Alterações

Agora que adicionamos todos os modelos desejados, o próximo passo é aplicar essas alterações. O Django aplicará esses esquemas ao nosso banco de dados MySQL.

O seguinte comando gerará todos os arquivos de migração necessários. A saída mostrará os locais de todos esses arquivos dentro do diretório do projeto:

makemigrations

O seguinte comando listará todas as migrações existentes:

Django Models 6

Observe que todas as migrações estão marcadas, exceto por 0001_initial que foi criada como parte dos modelos Post e Comment.

O seguinte comando mostrará qual consulta SQL o Django executará para realizar as migrações:

sample_app

Tudo o que precisamos agora é aplicar as migrações. Essas migrações gravarão as alterações no banco de dados:

migrate

Passo 9. Verificando as Alterações

Para verificar as alterações, vamos dar uma olhada no nosso banco de dados MySQL. Inicie o shell do MySQL como o usuário do Django:

Em seguida, altere o banco de dados ativo atual para o banco de dados do aplicativo Django:

Liste todas as tabelas do banco de dados:

Por fim, para ver o conteúdo de qualquer uma das tabelas, use a DESCRIBE consulta:

Django Models 7

Limitações do Django com o MySQL

Ao usar o MySQL como servidor de banco de dados para seu aplicativo Django, há algumas coisas que você deve ter em mente:

  • Não há muito suporte para transações em processos de alteração de esquema. Ou seja, se uma migração falhar, será necessário desfazer manualmente todas as alterações antes de tentar outra migração. Não há como reverter para um ponto anterior onde a migração com falha não ocorreu.
  • Para a maioria dos processos de alteração de esquema, o MySQL reescreve completamente as tabelas. Em certas situações, isso pode ser muito demorado. Na pior das hipóteses, a complexidade de tempo será proporcional ao número de linhas a serem adicionadas ou colunas a serem removidas. De acordo com a documentação oficial do Django, isso pode levar um minuto por milhão de linhas.
  • O MySQL impõe um limite de caracteres para o comprimento dos nomes de colunas, tabelas e índices. Também há um limite no tamanho total de todas as colunas e coberturas de índice. O Django pode ir além desse limite. Alguns backends que não sejam o MySQL conseguem lidar com o limite mais alto do Django.

É por isso que é altamente recomendável avaliar suas opções e escolher a mais adequada.

Considerações Finais

Este guia demonstra com sucesso como adicionar módulos a um aplicativo Django existente. Usamos o MySQL como backend para o aplicativo. Ele também apresenta alguns conceitos-chave do Django, como modelos, como funciona a migração e como o Django traduz modelos em tabelas de banco de dados MySQL.

Boa computação!

author

Hark Labs

Autor · CloudSigma

Preslav Dobrev é um designer criativo na CloudSigma, focado na construção de uma identidade empresarial consistente por meio de canais de marketing tradicionais e inovadores. Ele é hábil em combinar a visão artística com o marketing estratégico para criar narrativas de marca impactantes.

Comentários

Nenhum comentário ainda. Seja o primeiro.