No desenvolvimento web, a demanda por APIs flexíveis nunca foi tão alta. Entre no GraphQL, uma linguagem de consulta para APIs que fornece uma abordagem revolucionária em comparação às APIs RESTful tradicionais.
Este artigo se aprofunda na importância do GraphQL, particularmente quando implementado no Django, lançando luz sobre seu impacto transformador no desenvolvimento de APIs.
Compreendendo o propósito do GraphQL:
Em sua essência, o GraphQL aborda alguns desafios comuns enfrentados com APIs RESTful. Em uma abordagem RESTful típica, vários endpoints são frequentemente necessários para buscar dados específicos, levando a uma busca excessiva ou insuficiente de informações.
O GraphQL, por outro lado, permite que os clientes solicitem precisamente os dados de que precisam em uma única consulta. Isso reduz significativamente a quantidade de dados transferidos pela rede, otimizando o desempenho e minimizando o uso de recursos.
O Django, conhecido por sua simplicidade e confiabilidade, integra-se perfeitamente com o GraphQL para fornecer uma solução de API robusta e eficiente.
A integração GraphQL-Django capacita os desenvolvedores a definir um esquema que espelha precisamente seus modelos de dados, permitindo que os clientes solicitem dados com precisão inigualável.
Vantagens do Graphql Sobre APIs RESTful:
Eficiência: GraphQL minimiza a busca excessiva e insuficiente de dados, aumentando a eficiência na recuperação de dados.
Flexibilidade: Clientes podem solicitar campos específicos, relacionamentos aninhados ou dados relacionados, oferecendo flexibilidade incomparável.
Redução de idas e voltas: A capacidade do GraphQL de recuperar todos os dados necessários em uma única solicitação reduz o número de idas e voltas ao servidor.
Simplicidade de versionamento: Diferentemente do REST, onde o versionamento pode levar a endpoints complexos, o GraphQL simplifica o processo, permitindo transições mais suaves e compatibilidade com versões anteriores.
Implementando Graphql no Django
A implementação do GraphQL no Django envolve a integração de uma biblioteca GraphQL, como o Graphene-Django. Esta biblioteca traduz perfeitamente os modelos Django em um esquema GraphQL, facilitando um processo de adoção direto.
Os desenvolvedores podem então definir consultas e mutações para adaptar precisamente a API às necessidades de seus aplicativos.
Em um aplicativo django pronto, instale o graphene-django:
pipinstallgraphene-django
Bash
Após instalar o pacote graphene-django, precisamos adicionar o pacote instalado nos aplicativos instalados na pasta settings.py do projeto:
# settings.py...INSTALLED_APPS=[..."django.contrib.staticfiles",# <---- Required for GraphiQL"graphene_django"]
Python
Uma vez que instalamos o pacote e adicionamos o pacote graphene_django, é necessário criar um esquema para um modelo. Digamos que este modelo é usado para armazenar novos livros para um aplicativo:
No arquivo query.py são definidas todas as consultas necessárias para a aplicação. Já que temos livros e usuários.
No entanto, para começar a implementação, é necessário explicar o que significa a classe Query. No GraphQL, a classe Query serve como ponto de entrada para buscar dados do servidor.
Ela define a estrutura das consultas que os clientes podem executar para recuperar dados usando o graphene.ObjectType.
A classe Query é uma parte fundamental de um esquema GraphQL e conterá campos que representam diferentes tipos de consultas que um cliente pode fazer.
Portanto, na classe Query temos três consultas: all_books, all_users e book_by_title. Todas elas são definidas pelos tipos que criamos antes. Como o BookType e o UserType que exibirão os dados corretamente, quando buscarmos os dados do esquema graphql.
Além disso, essas consultas precisam ter seus próprios “resolvedores”, a consulta raiz do Django que é usada para recuperar corretamente os dados no grapqhql na sequência.
Então, se a consulta for chamada all_books, ela deverá ser resolve_all_books()…
Definindo o esquema graphql em settings.py:
Como já definimos todos os tipos e consultas, criando o esquema, é hora de definir o esquema no settings.py.
Em outras palavras, ele deve apontar para onde o schema com todas as consultas está.
Resultado
Indo para o caminho da url você terá o seguinte resultado:
localhost:8000/graphql
Também podemos usar o Postman para testar o esquema graphql:
Conclusão:
Em um cenário digital onde eficiência e flexibilidade são primordiais, o GraphQL surge como um divisor de águas no desenvolvimento de APIs.
Quando harmoniosamente integrado ao Django, essa dupla eleva a experiência de desenvolvimento, oferecendo uma solução concisa, poderosa e personalizável para criar APIs que atendem às demandas de aplicativos modernos.
À medida que a comunidade de desenvolvimento continua a adotar o GraphQL, seu potencial para remodelar a forma como interagimos com APIs se torna cada vez mais evidente, apontando para um futuro onde precisão e desempenho definem o padrão.
Herança de templates no django é uma funcionalidade que o django template language traz para o framework. Para facilitar e acelerar o desenvolvimento do HTML usando a metodologia DRY – don’t repeat yourself (nao se repita).
O sistema de template, para trazer uma idéia facilitada, seria como se fosse um lego. Onde você poderá criar uma template como base, outra template para o header, outra template para uma seção de postagens por exemplo, e reultiliza-la em outras templates no django da maneira que você bem entenda.
Como se fossem componentes resumidamente. Onde unindo-os tornara uma pagina html apenas.
Nesta postagem eu irei te explicar de forma simples e visual como os sitema de herança de templates funcionam.
Como funciona a herança de templates no django?
Antes de te explicar o funcionamento de templates no django eu irei te detalhar como, e o jeito de criar paginas estaticas são. E ao entender esta forma de criar paginas você terá uma idéia do impacto o django template language, quanto irá ajudar o seu desenvolvimento de software.
Paginas estáticas usando apenas html
Na imagem acima, eu trouxe um exemplo para facilitar o seu entendimento. No caso, temos uma aplicação simples com quatro paginas. Podemos dizer que a pagina 1 é a pagina home, a pagina 2 seria produtos, a pagina 3 seria contato, e a pagina 4 seria por exemplo uma pagina de formulario.
Com isso, voce pode perceber, que todas elas se repetem. No minimo todas tem as tags <html> e <body>. Fora que dentro das tags internas e bem provável que essas páginas também tem componentes repetidos como:
Navbar
Sections
Footer
Imagina, toda vez que tenhamos que criar uma nova pagina, termos que copiar praticamente todo o codigo para ela. Como falei acima, no desenvolvimento, nós precisamos focar em criar coisas novas, e não ficar repetindo o mesmo código. Por isso devemos seguir a metodologia DRY (don’t Repeat Yourself).
E é aí que as templates do django entram. ;D
Paginas dinâmicas nas templates no django
No exemplo acima eu tento te explicar atravez de imagens, de uma forma bem “high level” como templates funcionam no django.
Nesta imagem, do lado direito, temos a template base (azul), que é comum em todas as outras páginas. Com isso, todas as outras templates poderam herda-las para que o django renderize uma página html única.
Ja no meio da imagem, temos as templates (verdes) que usaram a template base para usar suas tags como html e body. E por último temos uma outra template (vermelha) que pode ser qualquer código html que possivelmente pode ser usada em qualquer outra parte do código.
Resumindo:
A primeira template (1) pode ser vista como o header da pagina.
A segunda template (2) como uma section qualquer.
A terceira template (3) e vista como uma sub-section que pode ou nao ser inclusa dentro da template base. Mas foi inicialmente criada para ser usada para se adicionar em uma section.
Estrutura basica para usar as templates no django
Você deve estar se perguntando: Mas como tudo isso se une, e como elas são configuradas para criar paginas unicas?
Essa é uma otima pergunta. Basicamente, no django-template-language as heranças de templates são feitas usando as tags:
block
extends
include
Usando a tag de template chamada {% block %}
Eu quero trazer primeiramente a tag {% block %} para que você entenda de uma forma crescente o uso de cada tag na linguagem de template do django.
Basicamente, a tag {% block %} é usada para definir blocos de conteúdo que podem ser substituídos ou modificados nos templates filhos.
Em outras palavras, ela é usada como block de abrir e fechar para que as templates filhos sejam inclusas dentro delas. Da mesma forma de que fazemos com html.. Entende?
Em resumo, a tag {% block %} funciona como um marcador que define áreas específicas do template base onde o conteúdo dos templates filhos será inserido. Pense nela como uma “caixa” que pode ser preenchida ou alterada nas páginas que herdam esse template.
Note que a tag {% block %} é acompanhada por uma tag de fechamento {% endblock %}, semelhante a como abrimos e fechamos tags no HTML.
Como funciona na prática?
Quando usamos a tag {% extends 'nome_do_template.html' %} em um template filho, ele “herda” a estrutura do template pai. O conteúdo que colocamos entre as tags {% block %} e {% endblock %} no template filho será inserido na “caixa” correspondente no template base.
{% extends "base.html" %}{% block title %} Home - Meu Site{% endblock %}{% block content %}<h2>Bem-vindo à página inicial!</h2><p>Este é o conteúdo específico da página inicial.</p>{% endblock %}
HTML
Como visto, o template home.html herda a estrutura do base.html usando a tag {% extends %}.
Desta forma, a linguagem de template do django, entende que você quer usar a template base.html para inserir o codigo. E entende onde cada bloco da template home.html devem ser inseridos na template base.html.
Caso voce queira ter uma introdução do django você póde dar uma olhada nessa postagem: 😎
Introdução ao django
Sendo assim, como se pode ver, temos dois blocks (ou duas caixas que seram inseridas na template base) um e o {% block title %} que esta no topo da template base.html e o segundo e o {% block content %} que será incluso o codigo html.
Como funciona a tag {% include %} nas templates no django
A tag {% include %} basicamente faz uma “inclusão” de um arquivo de template dentro de outro. Ela carrega e renderiza o conteúdo do template que você especificar diretamente no local onde a tag é usada. Isso é útil quando você quer compartilhar trechos de código comuns entre várias páginas.
Exemplo de uso:
Imagine que você tem um cabeçalho que deseja reutilizar em várias páginas do seu site.
Quais são as vantagens de usa a tag {% include %}:
Reutilização: Se você tiver elementos repetitivos, como menus de navegação, rodapés, ou outros componentes, pode simplesmente criar um template separado para eles e incluí-los em várias páginas.
Manutenção mais fácil: Se você precisar alterar o conteúdo de um componente comum (como o menu), só precisa editar o template incluído (header.html, por exemplo), e a mudança será refletida em todas as páginas que o usam.
Componentização: Ajuda a dividir partes do layout em “componentes” menores e reutilizáveis, deixando o código mais modular e organizado.
Exemplo usando condicionais nas templates no django:
Você também pode passar variáveis para o template incluído ou usar a tag {% include %} dentro de condições.
{% include 'menu.html' with user=user %}
HTML
Ou você pode renderizar o template condicionalmente:
{% if user.is_authenticated %} {% include 'user_menu.html' %}{% else %} {% include 'guest_menu.html' %}{% endif %}
HTML
Onde no codigo acima, e checado se o usuario esta autenticado. Se sim retornar a template user_menu.html. Agora, caso o usuario não esteja autenticado retornar a template guest_menu.html.
O uso é infinito.
Agora, quais as diferenças entre as tags {% include %} e {% extends %}nas templates no django?
Caracteristica
{% extends %}
{% include %}
Objetivo
Herança de templates o django, criando uma estrutura base
Incluir um trecho de template específico
Uso
Para herdar e sobrescrever blocos de conteúdo
Para reutilizar partes comuns de um layout
Estrutura
Exige que o template filho tenha uma relação direta com o template pai. O template filho precisa herdar o layout geral e definir blocos específicos de conteúdo.
Simplesmente injeta o conteúdo de outro template onde a tag está localizada. Não há herança ou blocos envolvidos.
Contexto
Usada quando você deseja ter uma estrutura hierárquica de templates, com um template base e templates filhos que podem alterar partes específicas.
Usada para reutilizar componentes ou pedaços de código que são os mesmos em várias partes do site.
Flexibilidade
Estrutura mais rígida, pois o layout base é seguido pelo template filho
Estrutura mais flexível, permitindo a inclusão de qualquer template em qualquer parte da página
Conclusão
A herança de templates no Django é uma das funcionalidades que mais traz eficiência para o desenvolvimento web, especialmente ao seguir a metodologia DRY (Don’t Repeat Yourself). Como discutido ao longo desta postagem, o sistema de templates do Django permite criar páginas dinâmicas e organizadas, reutilizando estruturas básicas como cabeçalhos, rodapés e seções inteiras de forma modular e facilmente gerenciável.
Através da tag {% extends %}, conseguimos construir uma página base que serve como um esqueleto para outras páginas, facilitando a inserção de conteúdo específico sem a necessidade de duplicar código. Essa abordagem é comparável a usar “componentes” que formam diferentes partes de uma aplicação web, onde uma única base é usada para gerar múltiplas páginas com pequenas variações de conteúdo.
A tag {% block %}, por sua vez, nos permite marcar regiões específicas do template base que podem ser alteradas por templates filhos, tornando o processo de substituição de conteúdo simples e direto. Isso garante que áreas essenciais, como menus e rodapés, permaneçam consistentes, enquanto o conteúdo dinâmico é adicionado conforme necessário.
Além disso, a tag {% include %} oferece uma maneira eficiente de incluir trechos de templates que podem ser reutilizados em diversas partes da aplicação, como menus, formulários e blocos de conteúdo recorrentes. Essa funcionalidade reduz a necessidade de duplicação e permite atualizações rápidas e consistentes em todas as páginas que utilizam esses componentes.
Em conjunto, o uso de {% extends %}, {% block %} e {% include %} não apenas otimiza o tempo de desenvolvimento, mas também facilita a manutenção e evolução do projeto, mantendo o código mais limpo e fácil de entender. Ao modularizar o layout e separar as responsabilidades entre templates base e filhos, o Django proporciona uma arquitetura flexível, escalável e eficiente para o desenvolvimento de interfaces dinâmicas.
Com esse sistema, desenvolvedores podem focar no que realmente importa: criar novas funcionalidades e melhorar a experiência do usuário, sem se preocupar com a repetição de código e a complexidade de manutenção do layout.
Django models são simplemente a definição e representação de dados em uma aplicação Django.
Com isso, caso você queira trabalhar e implementar interações com algum banco de dados e essencial que você entenda como trabalhar com essa ferramenta no qual ira te ajudar muito no seu desenvolvimento.
Vamos lá! Irei explicar sobre os models do django de uma forma simplificada, no qual esperofacilitar o seu entendimento.
Ok, mas o que são django models de uma forma mais técnica?
No caso, os models do Django são usados para criar e representar tabelas de um banco de dados como objetos em Python.
Em outras palavras, você poderá criar um model no Django (que representa uma tabela) herdando uma classe do Django chamada Model.
Como cada tabela de um banco de dados tem tipos de campos diferentes, você também poderá aplicar essa tipificação aos campos da mesma maneira, porém utilizando o Django.
Exemplo de uma tabela simples no SQL:
id
titulo
descricao
1
Como fazer molho de tomate caseiro
Nessa postagem iremos falar sobre um dos…
2
10 maneiras de criar massas de pizza caseira
Voce ira aprender quais são as dez maneira…
3
Quais os melhores sistemas de restaurante
Trabalhando a 15 anos como gestor de resta..
Tabela: Postagens
Agora, como uma tabela seria representada em uma aplicação Django?
from django.db import models # <-- Herdando toda a lógica pronta do DjangoclassPostagen(models.Model): titulo = models.CharField(max_length=120) descricao = models.TextField()def__str__(self):returnself.titulo
Python
Como podemos notar, temos uma tabela (vamos dizer que é uma tabela em um banco de dados 😄) chamada Postagens. Logo abaixo, temos um model no Django que representa essa tabela com o mesmo número de colunas: título e descrição.
Ah, só para lembrar que, no Django, não é necessário adicionar o campo ID. Ele é adicionado por padrão nos modelos do Django. 😉
Dessa forma, com uma explicação um pouco mais técnica que a introdução, você já consegue entender melhor qual é o propósito inicial de um model no Django.
Campos Comuns Usados em Modelo do Django
Como existem vários tipos de dados para colunas em um banco de dados, como strings, caracteres, booleanos, numéricos (inteiros, flutuantes e especiais), etc., no próprio model do Django você terá a possibilidade de criar diferentes colunas com diferentes tipos de dados.
No exemplo acima, vemos duas colunas: título e descrição. Essas duas colunas têm tipos de dados praticamente iguais: CharField() e TextField().
O CharField traz a capacidade de criar textos com um número limitado de caracteres (no exemplo acima, com 120 caracteres) e será traduzido como VARCHAR no banco de dados.
Já o TextField é basicamente a representação de uma string, sem limitação de caracteres, e será traduzido como TEXT no banco de dados.
Para textos temos os CharField (cujo e obrigatorio usar o parametro max_length) e o TextField.
Tipo numéricos temos o IntegerField (que armazena numeros inteiros), FloatField e o DecimalField que tambem adiciona numeros flutuantes porem com casas decimais definidas como a adição de casas decimais com o parametro decimal_places, e o numero total de digitos com o parametro max_digits.
Também temos campos que representam data e hora. Com os campos, DateField que apenas armazena (ano, mes e dia). O TimeField que apenas armazena horas e o DateTimeField que armazen data e horas.
Alem disso também temos campos do tipo booleanos como o BooleanField no qual e usado para adicionar valores como True ou False.
E por fim, temos os campos de relacionamentos: ForeignKey onde se cria um relacionamento de “muitos para um” onde se é necessario adicionar para qual tabela ou modelo esta sendo relacionado e o parametro on_delete no qual será setado o que acontecerá ao deletar a row com o relacionamento. O campo de relacionamento OneToOneField no qual cria um relacionamento de “um para um” entre duas tabelas. E por fim o campo de relacionamento ManyToManyField que criar relacionamentos de “mutos para muitos” entre duas tabelas.
Os campos citados acima são apenas os mais comuns usados para a criação de um model no django. Existem varios outros no qual voce pode pesquisar para uso mais especificos e tambem pode ate criar um campo especifico para seu uso especifico, porem eu não irei entrar em muitos detalhes nesta postagem.
Conectando com bancos de dados em uma aplicação django
Antes de iniciar qualquer explicação aqui sobre a criação de objetos usando a ORM do django através dos models, ficaria sem sentido fazer isso sem a explicação da conexão de uma aplicação django com um banco de dados. Com isso explicarei brevemente como uma conexão do django e feita com o banco de dados:
Por padrão o django tem um arquivo de configuração chamado settings.py onde vários arquivos de conexão e configurações estão alocadas, e uma delas é a conexão com o banco de dados.
No código acima podemos ver qual é a constante que representa a conexão com o banco de dados chamada DATABASES. Neste exemplo é representado com uma configuração padrão de uma aplicação inicial do Django.
Por outro lado, também podemos usar esta mesma constante para se conectar com diferente bancos de dados:
Com o exemplo acima criando a conexão com um banco de dados “ENGINE” postgresql e suas variaveis necessarias para conexão.
Migrando as Tabelas
Quando você define os models (modelos de dados) no Django, eles ainda não existem no banco de dados. Para criar as tabelas no banco, você usa o comando python manage.py migrate. O Django então traduz os models em tabelas SQL e as cria no banco de dados.
Realizando a Conexão
Quando você executa o Django (comandos como runserver ou migrate), o Django usa essas informações para se conectar ao banco de dados. Ele cria uma conexão automática por meio de sua camada de abstração de banco de dados, chamada ORM (Object-Relational Mapping). Com o ORM, o Django traduz o código Python em consultas SQL para interagir com o banco de dados.
Interagindo com o Banco de Dados
Com a conexão estabelecida, o Django permite que você faça operações como criar, ler, atualizar e deletar registros no banco de dados usando código Python. Basicamente, Você não precisa escrever consultas SQL manualmente, o Django faz isso por você com seu ORM.
Passo-a-passo de iteração com banco de dados usando django models e ORM
Vamos supor que iremos criar uma aplicação django onde iremos adicionar postagens (da mesma maneira que fizemos no topo desta postagem). Porém iremos usar esta tabela para iteragir com o banco de dados.
pythonmanage.pymakemigrations# cria um arquivo de migrationspythonmanage.pymigrate# reflete o model no banco de dados
Bash
Ao ativar os dois comandos acima, por padrão, será criado um banco de dados sqlite3 no django (em caso você não fazer conexão com outro banco de dados). É refletida todas as migrations padrão do django e a desse modelo para o banco de dados.
Interagindo Com o Banco de Dados Usando ORM do Django
Agora que temos toda configuração feita podemos testar nosso modelo de postagens em usuarios usando o ORM do django.
No terminal adicione o seguinte comando:
pythonmanage.pyshell
Bash
Com isso voce terá acesso ao shell da aplicação django que voce esta trabalhando. Então se tudo correu bem você terá acesso ao shell da aplicação como a seguir:
(venv) C:\software_projects\projeto_de_configuração> python manage.py shellPython3.10.11 (...) [MSC v.1929 64 bit (AMD64)] on win32Type"help","copyright","credits"or"license"formoreinformation.(InteractiveConsole)>>> # seu codigo ira ser adicionado aqui
Bash
Agora vamos iniciar a criação dos dados usando os models que criamos e a ORM do django.
>>># imports>>>from postagens.models import Postagem >>>from django.contrib.auth.models import User>>>>>># criação de usuario -->>> user = User.objects.create(username="Elias", password="Aprendendo123")>>>>>># testando se usuario foi criado>>> user<User: Elias>>>>>>># criacao de postagem -->>> postagem = Postagem.objects.create(...titulo="Noções Basicas de Models no Django..",...descricao="Models é simplemente a definição e representação de dados em...",...autor=user... )>>># checagem se a postagem foi criada>>> postagem<Postagem: Noções Basicas de Models no Django..>>>>>>># checagem de campos. >>> postagem.autor<User: Elias>>>> postagem.data_criacaodatetime.date(2024, 9, 27)>>>
Python
Como vemos acima, usamos um sub-framework do Django ORM para interagir com o banco de dados. Explicando o que foi feito: assim que entrei no shell com o comando python manage.py shell, fiz o import dos models que irei usar, o modelPostagem e o User (que é padrão do Django).
Em seguida, foi usado o comando para criar um único usuário com apenas usernamee password. Só para lembrar que foi criado o usuário porque seria necessário para a criação de uma postagem.
Sem um usuário, não seria possível criar uma postagem. Dessa forma, a postagem foi criada, associando o usuário criado anteriormente ao campo autor.
Por último, foi verificado se a postagem havia sido criada corretamente, também checando os campos como postagem.autor e postagem.data_criacao.
Checando Os Dados Diretamente No Banco de Dados
Caso você esteja usando o VSCode, poderá instalar uma extensão chamada SQLite Viewer.
Com essa extensão você poderá acessar o banco de dados de teste sqlite clicando no icone do sqlite para acessar os dados que foram criados usando os comandos do shell.
Como voce vê acima, para visualizar as tabelas criadas você poderá seguir os passos que foram feitos acima (logo após você instalar o SQLite Viewer).
Então nesse caso, você poderá iniciar clicando no icone do banco db.sqlite3.
Ja na sequência você terá acesso a todas as tabelas que existem no sistema.
Ache a tabela que precisa saber onde estão os dados criados (lembrando que o django segue um padrão de nomeação de tabelas (<app-name>_<model-name>)). Então nesse caso precisa-se clicar em postagens_postagem.
Ao clicar na tabela você terá o acesso aos dados que você criou com os dados como id, titulo, descricao, data_criacao e autor_id.
Conclusão
Nesta postagem poderia ser explicado tudo que sei sobre ORM, como criação de diferente relacionamentos, criação de campos customizaveis ou até mesmo te explicar outros tipos de campos como o JSONField() porém o foco é você entender as noções basicas de models no django.
Nesta postagem eu gostaria apenas de te apresentar como podemos trabalhar com models de uma forma simples e se conectar com o banco, criando alguns objetos, com inserção dos dados no banco de dados.
Caso você precise de uma postagem mais complexa futuramente irei iniciar uma postagem com detalhes a fundo de django ORM, olhando por de baixo do capô do django e entendendo como esse framework funciona por de baixo dos panos.
Se você está começando no Django, com certeza deve estar querendo aprender como iniciar um novo projeto. E por que não dizer, qual é a forma correta de iniciar um projeto no Django?
Sendo assim, neste tutorial, vou te explicar de forma simples quais são os passos necessários para configurar um novo projeto Django, do início ao fim.
Se você está começando na programação, não se preocupe. Talvez você se perca aqui ou ali no processo de configuração, mas, repetindo os passos que vou te mostrar, verá que não é tão difícil assim.
Tecnologias necessarias para criar o projeto
Para iniciar a configuração do projeto sera necessario as seguintes tecnologias para você iniciar a configuração do projeto usando django.
Ter o python instalado na sua maquina.
Ter um IDE como o VSCode ou Pycharm para facilitar a configuração do projeto.
Certifique-se de que o Python esteja instalado na sua máquina. Agora, não é necessário usar especificamente o VSCode ou o PyCharm para configurar o projeto. Esses são os IDEs mais utilizados para essa configuração, mas fique à vontade para usar qualquer IDE de sua preferência.
Iniciando a configuração
Antes de iniciar o projeto, a primeira coisa que eu indicaria você fazer é checar se o python realmente esta instalado na sua maquina.
Com isso, abra o terminal do seu sistema operacional, como o bash do linux ou o powershel do windows e adicione a palavra “python” na mesma:
O Windows PowerShellCopyright (C) Microsoft Corporation. Todos os direitos reservados.Instale o PowerShell mais recente para obter novos recursos e aprimoramentos! https://aka.ms/PSWindowsPS C:\Users\User> PythonPython 3.10.11 (tags/v3.10.11:7d4cc5a, Apr 52023, 00:38:17) [MSCv.192964bit (AMD64)] on win32Type "help", "copyright", "credits" or "license"for more information.>>>
PowerShell
Caso ao adicionar a palavra chave “python” os valores acima aparecer ja podemos iniciar a configuração.
Iniciando o projeto
Ja no seu terminal, use o comando “mkdir” que significa (make a directory) para criar uma nova pasta onde você mais preferir adicionando o nome da pasta onde ficara o projeto django:
No caso acima eu coloquei o nome da pasta como “projeto_de_configuração”. Ao criar a pasta, entre na mesma usando o comando “cd <nome_da_pasta_que_voce_colocou>”:
PS C:\Users\User\desktop\software_projects> cd projeto_de_configuraçãoPS C:\Users\User\desktop\software_projects\projeto_de_configuração>
PowerShell
Se você seguiu os passos corretamente, verá que, no terminal, o nome da pasta aparecerá, indicando que você está dentro da pasta correta.
Muito bem! Já que estamos na pasta, podemos abri-la usando o comando code . para abrir o projeto no VSCode (caso você tenha o VSCode instalado, claro).
Se você instalou o VSCode, basta digitar o comando code . no terminal (estando dentro da pasta), e ela será aberta automaticamente no VSCode.
Ao abrir o VSCode, você verá o editor completamente vazio (sem os quadrados e números, inicialmente).
Para verificar se você está realmente dentro do projeto, o nome dele aparecerá em diferentes partes do VSCode. Por exemplo, no quadrado número 1, você verá a representação do que está dentro da pasta “projeto_de_configuração”.
No quadrado número 2, será exibido o espaço onde faremos a edição do código selecionado no quadrado número 1. E, finalmente, o quadrado número 3 representa o terminal, que utilizaremos para adicionar os comandos necessários para instalar o Django dentro da pasta que criamos anteriormente.
Criando o ambiente virtual para o projeto
Antes de adicionar os comandos para criar o projeto Django, será necessário criarmos um ambiente virtual.
Você deve estar se perguntando: o que é um ambiente virtual no Python?
Basicamente, um ambiente virtual permite criar um ambiente Python isolado, separado do Python principal instalado na sua máquina.
Por exemplo, ao instalar o Python na sua máquina, ele estará “limpo”, sem nenhuma biblioteca adicional. Com isso, você poderá utilizá-lo para criar outros ambientes sem causar nenhum efeito colateral no sistema ou em outros projetos.
No exemplo acima, eu tento explicar como isso funciona. O circulo vermelho representa o python padrão que voce tem instalado na sua maquina (sem nenhuma instalação).
E logo ao lado, um novo ambiente virtual onde iremos sem medo, instalar o que quizermos pois não ira interferir no ambiente padrão do python que ja esta instalado na sua maquina.
Com isso, va em frente e coloque o comando que estara listado abaixo. Só não se esqueça de ter certeza que voce esta dentro do diretorio (pasta) que voce criou 😉.
Sendo assim, adicione o comando python3 -m venv venv no terminal do VSCode e voce vera uma nova pasta chamada “venv” dentro da pasta do projeto.
Em um exemplo pratico, voce literalmente fez uma copia do python para dentro do seu projeto para poder usa-lo da forma que voce quizer.
Agora, ja que você criou a pasta do ambiente virtual com o comando adicionado acima, e hora de ativa-lo para ter um ambiente virtual ativado no nosso projeto.
Vá em frente e adicione o comando a seguir no terminal para ativar o ambiente virtual:
Muito bem, o comando para ativar o ambiente virtual no seu diretorio e venv/scripts/activate.
Com isso estamos prontos para instalar o django dentro deste novo ambiente virtual.
Instalando o django no ambiente virtual do projeto
Antes de instalar o Django no nosso ambiente virtual, você precisa entender o que gerencia a instalação de pacotes dentro de um ambiente virtual: o pip.
Pip é a abreviação de “Preferred Installer Program”, que em português significa “programa de instalação preferido”. Ele é usado como um comando de linha para instalar novos pacotes dentro do ambiente Python.
Em resumo, um pacote Python pode ser desde um pequeno pedaço de código reutilizável até um framework completo, como o Django.
Para instalar um programa, este é o comando que você precisará usar:
pip install <NOME_DO_PACOTE>
PowerShell
Bom, agora que você entendeu como se cria um ambiente virtual isolado, como ativa-lo em um diretorio e sabe qual o comando para se instalar um novo pacote, esse e o momento para instalarmos o django usando o pip.
pip install django
PowerShell
Em seguida, va em frente e adicione o mesmo comando no seu ambiente virtual e veja o processo de instalação.
Checando a instalação do pacote no nosso ambiente virtual
Ja que seguimos com a instalação do django no nosso ambiente virtual esse e o momento de checagem, e saber se o django foi instalado corretamente.
Com isso, existem inicialmente duas maneiras de se saber se o mesmo foi instalado corretamente.
Usando o comando pip list
Checando dentro da pasta Lib/ do ambiente virtual
Checando com o comando pip list
Para checar se os pacotes que voce instalou adicione o comando pip list no terminal onde o ambiente virtual foi instalado.
Se tudo saiu bem, você pode ver todos os pacotes que foram instalados com a instalação do django.
Checando dentro da pasta Lib/ do ambiente virtual
Agora, a segunda maneira seria entrar dentro da pasta do ambiente virtual, e logo em seguida ir para a pasta Lib/:
Se o django foi instalado corretamente você o verá dentro da pasta venv/Lib/.
Iniciando um projeto django
Agora que entendemos a criação de um ambiente virtual e como o pip funciona como linha de comando, além da instalação do Django no nosso ambiente virtual, este é o momento de iniciarmos a instalação do Django no diretório que criamos para o nosso projeto.
Uma vez que instalamos o Django no ambiente virtual, temos à disposição uma ferramenta de linha de comando chamada django-admin, assim como o pip.
Com essa ferramenta, podemos executar vários comandos no nosso projeto. No entanto, iremos abordá-los em mais detalhes em outras postagens, ok?! 😉
Mas, caso queira saber quais são os subcomandos do django-admin, basta adicionar o seguinte comando:
django-admin help
PowerShell
Criando o projeto
Vamos la, no terminal do IDE do ambiente virtual adicione o comando a seguir para criar os diretórios do projeto django.
django-admin startproject blog .
PowerShell
Adicionando o comando django-admin, você pode seguir o segundo comando para iniciar um projeto (core/núcleo do projeto). Logo em seguida o nome que será dado pelo django ao projeto, e o “.” que significa que ele não será criado com uma sub-pasta.
Va em frente e rode o comando acima.
Caso você conseguiu usar o comando corretamente no terminal, você terá uma pasta do projeto chamada blog/ e um arquivo chamado manage.py.
Instalando um app para o nosso projeto django
Muito bem, você ja fez a maioria da configuração do projeto. Porém é preciso adicionar mais uma parte da configuração, o “app” que será necessario para adicionar a logica de negóscio. Como a criação de modelos, views, templates, urls e até uma API Restful se for o caso.
Mas antes de eu te mostrar o comando no qual criará a aplicação, entenda que, como disse antes, voce tera que adicionar um nome para esta aplicação. Com isso, pense bem qual será o dominio que essa aplicação terá.
Nesse caso, como exemplo, eu irei adicionar o nome/dominio “postagens”. Entao vamos la, iremos adicionar o comando de criação de uma nova aplicação:
Como vocês viram acima, perceberam que eu usei o seguinte comando:
python manage.py startapp postagens
PowerShell
E não usei o comando django-admin <nome do comando> mas sim o comando python manage.py <nome do comando>.
Isso é por que o python manage.py tem a mesma funcionalidade que o django-admin que no caso seria o poder de gerenciar o projeto django que você está trabalhando. Porem o django-admin e usado para criar o arquivo manage.py (que significa: gerenciar) e também tem acesso ao projeto a nível global.
Conectando a nova aplicação ao projeto django
Com o projeto e a aplicação criados, é hora de conecta-los. Nesse caso, todas as aplicações criadas seram conectadas no projeto no arquivo setttings.py.
Então, abra o projeto, nesse caso se chama “blog/” e vá até o arquivo settings.py. Neste arquivo, va até a variavel de tipo lista com nome INSTALLED_APPS, e adicione o nome da aplicação que voce criou no final da lista (como string).
De uma forma bem simplificada, ao adicionar o nome exato da aplicação que você criou com o comando “startapp” você tem que adiciona-lo desta maneira em settings.py do projeto. Caso contrario o django não sabera que a aplicação existe.
Conclusão
Seguindo todos os passos adicionados nesta postagens, você ficará craque ao criar novas aplicações. É bem provavel que você esteja achando o Django bem difícil de entender, eu concordo. Porém, olhe isso com bons olhos.
O Django e difícil, porém raramente você precisará fazer as coisas diferente, principalmente o setup do projeto. Isso que você aprendeu é um padrão para 80% dos projetos locais que voce ira criar.
Essa e a parte boa deste framework, ele e pragmatico. E quando voce aprende a trabalhar com ele, o fóco sempre será em construir a lógica de negócio e pouco em configurações.
A dockerização de uma aplicação Django representa um avanço significativo na forma como desenvolvedores lidam com ambientes de desenvolvimento e implantação. Em vez de enfrentar problemas de compatibilidade entre sistemas operacionais, versões de bibliotecas ou configurações locais, o Docker permite encapsular toda a aplicação Django — junto com suas dependências, banco de dados, configurações e bibliotecas — dentro de um contêiner leve, portátil e padronizado.
Esse processo assegura que a aplicação funcione de maneira idêntica em qualquer ambiente, seja no computador do desenvolvedor, em um servidor de teste ou em um ambiente de produção na nuvem. Além disso, a dockerização oferece uma maneira eficiente de gerenciar múltiplos serviços, como o servidor web, o banco de dados e o cache, dentro de uma única estrutura controlada.
Com o uso do Docker Compose, por exemplo, é possível orquestrar todos os componentes de uma aplicação Django com apenas um comando, facilitando o processo de inicialização, integração e manutenção do projeto. Essa abordagem promove maior consistência, escalabilidade e agilidade no ciclo de desenvolvimento.
Em suma, a dockerização de uma aplicação Django é uma prática moderna e essencial para desenvolvedores que buscam ambientes previsíveis, implantações rápidas e colaboração eficiente entre equipes, reduzindo erros e simplificando a jornada entre o desenvolvimento e a produção.
Benefícios do Docker Para Uma Aplicação Django:
O Docker oferece uma infinidade de vantagens para desenvolvedores Django. Um benefício chave é a garantia de consistência em vários ambientes. Ao empacotar o aplicativo Django com todas as suas dependências, o Docker elimina o dilema “mas funciona na minha máquina”. Esta uniformidade se estende desde configurações de desenvolvimento local até implantações em produção, promovendo uma colaboração mais suave e reduzindo problemas de compatibilidade.
Além disso, o Docker simplifica significativamente o processo de implantação. Sua abordagem baseada em contêineres simplifica o fluxo de trabalho de implantação, permitindo que os desenvolvedores empacotem a aplicação Django junto com suas configurações e dependências em uma única unidade, facilmente implantável em diferentes servidores ou plataformas na nuvem.
Configurando o Docker para Django
Passos para Instalação do Docker:
Instalar o Docker é o primeiro passo para dockerizar sua aplicação Django. O Docker fornece guias de instalação abrangentes para vários sistemas operacionais em seu site oficial. Para a maioria dos sistemas, o Docker Desktop é a opção preferida para um processo de instalação direto.
Verifique a Instalação: Uma vez instalado, verifique a instalação do Docker executando docker –version no seu terminal ou prompt de comando. Este comando deve exibir a versão instalada do Docker, confirmando uma instalação bem-sucedida.
Configurando o Docker para uma Aplicação Django:
Após instalar o Docker, você terá que criar um arquivo chamado Dockerfile dentro do projeto Django, onde a configuração atual será adicionada, criando como resultado a imagem que posteriormente será usada para criar o container…
Crie um Dockerfile: No diretório raiz do seu projeto Django, crie um arquivo chamado Dockerfile. Este arquivo conterá instruções para construir a imagem Docker para seu aplicativo Django.
Um Dockerfile é um arquivo de texto que contém um conjunto de instruções necessárias para construir uma imagem Docker. Ele especifica o ambiente e a configuração necessária para que sua aplicação Django seja executada dentro de um contêiner Docker.
Os componentes necessarios para o Dockerfile para nossa Aplicação Django:
1 – Declaração da Imagem Base: Comece seu Dockerfile declarando a imagem base. Tipicamente, a imagem base para aplicações Django é uma imagem oficial do Python.
Por exemplo:
FROM python:3.9
Dockerfile
2 – Definindo o Diretório de Trabalho na Aplicação Django: Defina o diretório de trabalho dentro do contêiner onde seu projeto Django residirá:
WORKDIR /app
Dockerfile
3 – Copiando Requisitos e Instalando Dependências: Copie o arquivo requirements.txt para dentro do contêiner e instale as dependências. Este passo garante que os pacotes Python necessários para seu aplicativo Django sejam instalados dentro do contêiner Docker:
4 – Copiando Arquivos da Aplicação Django: Copie todo o diretório do projeto Django para dentro do contêiner:
COPY . /app/
Dockerfile
5 – Definindo Variáveis de Ambiente e Executando a Aplicação Django: Defina quaisquer variáveis de ambiente necessárias e o comando para iniciar a aplicação Django:
# Exponha a porta que a aplicação usaráEXPOSE 8000
Dockerfile
Guia Passo a Passo:
Aqui está um guia passo a passo para escrever um Dockerfile especificamente adaptado para aplicações Django:
Crie um novo arquivo chamado Dockerfile no diretório raiz do seu projeto Django.
Declare a imagem base usando FROM python:3.9.
Defina o diretório de trabalho dentro do contêiner com WORKDIR /app.
Copie o arquivo requirements.txt e instale as dependências.
Copie todo o diretório do projeto Django para dentro do contêiner COPY . /app/.
Exponha a porta que a aplicação usará EXPOSE 8000.
Com isso o arquivo Dockerfile precisa estar desta maneira:
FROM python:3.9# Defina o diretorio que ira copiar os arquivos WORKDIR /app# Instale as dependências no containerCOPY requirements.txt .RUN pip install --no-cache-dir -r requirements.txt# Copie os dados do diretorio local para o diretorio do container que foi criado acimaCOPY . /app/# Exponha a porta que a aplicação usaráEXPOSE 8000
Dockerfile
Docker Compose para Aplicações Multi-Contêiner
O Docker Compose é uma ferramenta que permite aos desenvolvedores definir e gerenciar aplicações Docker multi-contêiner. Ele simplifica o processo de definição, execução e conexão de múltiplos contêineres Docker, sendo particularmente útil para aplicações complexas com serviços interconectados, como aplicações Django que dependem de bancos de dados ou outros serviços.
Neste exemplo, criaremos um arquivo docker-compose.yml para gerenciar dois contêineres: o contêiner da aplicação Python + Django e um contêiner de banco de dados para PostgreSQL.
Papel do Docker Compose em uma Aplicação Django:
Em uma configuração típica de aplicação Django, serviços adicionais como bancos de dados (por exemplo, PostgreSQL, MySQL) ou sistemas de cache (por exemplo, Redis) complementam o servidor central Django. O Docker Compose ajuda a orquestrar esses serviços, definindo suas configurações e interconexões dentro de um único arquivo YAML.
Criando um docker-compose.yml para nossa aplicação Django:
Para criar um arquivo docker-compose.yml adaptado para nossa aplicação Django, siga estes passos:
Crie um Novo Arquivo: Comece criando um novo arquivo chamado docker-compose.yml no diretório raiz do seu projeto Django (mesmo lugar onde voce criou o arquivo Dockerfile).
Definindo Serviços Django e Banco de Dados: Defina os serviços necessários para sua aplicação Django, como web para o servidor Django e db para o banco de dados. Especifique as configurações necessárias para cada serviço. Um exemplo do arquivo:
version:'3'services:web:build:.command:python manage.py runserver 0.0.0.0:8000ports:-"8000:8000"volumes:-.:/appdepends_on:-dbdb:image:postgres:latest# <--- pegando a imagem direto do docker environment:POSTGRES_DB:mydbPOSTGRES_USER:myuserPOSTGRES_PASSWORD:mypassword
YAML
Explicação da Configuração YAML:
O serviço web constrói a imagem Docker a partir do diretório atual, executa o servidor de desenvolvimento Django na porta 8000 dentro do container e configura um volume para recarregamento de código em tempo real.
Ah, ja iria me esquecer voce viu que o projeto django dentro do container esta 8000? Lembra que nos espomos a porta 8000 no dockerfile tambem? Pois bem no codigo acima voce ve que estamos apontando a porta interna onde o django esta se comunicando para a porta host do container. Assim podemos ter acesso na nossa maquina.
O serviço db usa a imagem do PostgreSQL e define variáveis de ambiente para configuração do banco de dados que serão usadas para inserir nas configurações do Django posteriormente.
Executando o Docker Compose:
Execute o comando docker-compose up no mesmo diretório onde seu arquivo docker-compose.yml está localizado. O Docker Compose lê o arquivo e inicia os serviços definidos.
E qual é a relação entre Dockerfile e docker-compose.yml?
A relação entre o Dockerfile e o arquivo docker-compose.yml está em seus papéis dentro de uma aplicação baseada em Docker:
Dockerfile: Define as instruções de configuração para construir uma única imagem Docker. Ele foca na configuração de um serviço contêinerizado específico (por exemplo, um aplicativo Django, um banco de dados). Este arquivo descreve como criar uma imagem de contêiner individual.
docker-compose.yml: Orquestra e gerencia múltiplos contêineres como uma aplicação coesa. Este arquivo descreve as relações entre diferentes serviços, especificando como vários contêineres interagem, suas configurações, dependências, rede e volumes.
Estrutura de uma aplicação django:
Se você ja esta acostumado com a estrutura de arquivos de um projeto django. Assim que deve ficar o mesmo depois de adicionar os arquivos Docker e docker-compose.yml..
Dockerizar uma aplicação Django fornece uma maneira eficiente de encapsular, implantar e gerenciar seus projetos. Através deste passo-a-passo, nos aprofundamos nos conceitos fundamentais do Docker e demonstramos como conteinerizar um aplicativo Django usando Docker e docker-compose.
Ao aproveitar a tecnologia de conteinerização do Docker, os desenvolvedores podem garantir consistência em ambientes de desenvolvimento, teste e produção, promovendo uma colaboração mais fácil e fluxos de trabalho de implantação mais suaves.
O Docker simplifica o processo de empacotamento do seu aplicativo Django e suas dependências em um contêiner portátil, eliminando problemas relacionados ao ambiente e facilitando a escalabilidade contínua.
Ao navegar em seu aprendizado de Docker e Django, lembre-se de que este guia serve como ponto de partida. Experimente recursos adicionais do Docker, ajuste suas configurações e mergulhe em estratégias avançadas de implantação para otimizar seu pipeline de desenvolvimento.
O Django, um poderoso framework web escrito em Python, tem desempenhado um papel significativo no panorama do desenvolvimento de aplicações web.
Desde sua criação por Adrian Holovaty e Simon Willison, o Django tem sido uma ferramenta essencial para desenvolvedores que buscam construir aplicações robustas, eficientes e escaláveis.
Nesta postagem introdutória, exploraremos os fundamentos do Django. Trazendo a essência de sua arquitetura e destacando os princípios-chave que o tornam uma escolha preferencial para projetos web.
Ao compreender o funcionamento interno do framework Django, você estará preparando o terreno para um aprendizado que abrange desde a definição de modelos até a criação de interfaces de usuário dinâmicas.
História da Criação do Framework Django
O framework Django foi criado por Adria e Simon quando os mesmos trabalhavam em uma radio chamada Lawrence Journal-World.
Com alta demanda de novas funcionalidades os desenvolvedores perceberam que estavam fazendo serviços repetitivos. E com isso muitas funcionalidades foram criadas para resolver esses tipos de demanda.
Por exemplo, inicialmente o django foi criado para criar sites complexos com conectividade para bancos de dados. Porem ao passar o tempo e com diferentes demandas, o projeto teve a necessidade de se focar em reutilização e a componentização do codigo.
Com isso, o django se tornou literalmente um framework com desenvolvimento rapido e sem a necessidade de repetição de código.
Estrutura MVC (Model-View-Controller) do Framework Django
MVC (Model-View-Controller) é um padrão de arquitetura de software que organizam o código de uma aplicação de maneira eficiente, separando as responsabilidades e melhorando a manutenção do código. Utilizados em contextos de desenvolvimento web, sendo MVC associado a muitos frameworks, assim como o framework Django, Ruby on Rails e Laravel por exemplo.
MVC (Model-View-Controller):
Framework Django: MVC
Model (Modelo):
Representa a estrutura de dados e a lógica da aplicação. Responsável por interagir com o banco de dados, realizar cálculos e processar dados.
View (Visão):
É responsável pela apresentação e exibição dos dados para o usuário. Recebe informações do modelo e apresenta ao usuário final.
Controller (Controlador):
Gerencia a interação entre o modelo e a visão. Responde a eventos do usuário e atualiza o modelo ou a visão conforme necessário.
O fluxo típico em um modelo MVC é o seguinte:
O usuário interage com a View.
A View notifica o Controller sobre a interação.
O Controller atualiza o Model conforme necessário.
O Model notifica a View sobre as alterações.
A View é atualizada para refletir as mudanças no Model.
Porem o django tem uma pequena variação deste padrão de arquitetura de software colocando o como MVT (Model-View-Template).
MVT (Model-View-Template):
Framework Django: MVT
Model (Modelo):
Similar ao MVC, representa a lógica de negócios e interage com o banco de dados.
View (Visão):
Lida com a apresentação dos dados e interação do usuário, mas, no contexto do Django, a View é mais fina que no MVC. Ela se concentra em processar a entrada e saída.
Template (Modelo de Apresentação):
Diferentemente do MVC, o MVT introduz o conceito de Template. O Template lida com a representação visual dos dados e é responsável pela geração do HTML final.
Provavelmente você percebeu que o django não tem necessariamente a camada controller em sua arquitetura. Essa é uma discussão comum na comunidade. Porém eu posso te dizer que realmente existe mas esta acoplada dentro do view.
Como assim? Como você viu acima o controller gerencia a interação entre o modelo e a visão. Responde a eventos do usuário e atualiza o modelo ou a visão conforme necessário. E é isso que o view do django faz, recebendo também a reponsabilidade do controller.
Resumindo, o view do django, ao receber a requisição pela url, faz a logica de apresentação, caso necessario a busca de dados se comunica com o model (que se comunica com o banco de dados). ao receber os dados, envia-os ao template no qual e renderizado o html e finalmente o envia como resposta para o usuario final.
Principais Componentes do Framework Django
O django, sendo um framework web Python, é composto por vários componentes que simplificam o desenvolvimento de aplicações web.
Estes são os principais componentes do framework django:
Models (Modelos):
Define a estrutura do banco de dados usando classes Python. Os modelos são mapeados para tabelas no banco de dados, proporcionando uma abstração conveniente para interação com o banco de dados.
Exemplo de codigo de models no django (models.py):
from django.db import modelsclassCustomer(models.Model): customer_id = models.UUIDField(primary_key=True, editable=False) first_name = models.CharField(max_length=120) last_name = models.CharField(max_length=120) phone = models.CharField(max_length=20, blank=True, null=True) email = models.EmailField(max_length=255, **options) street = models.CharField(max_length=255) street = models.CharField(max_length=120) state = models.CharField(max_length=120) zip_code = models.CharField(max_length=120)def__str__(self):returnself.first_name
Python
Ao migrar o codigo criado acima será criado uma tabela no banco de dados SQL onde o django poderá acessa-lo usando o seu ORM.
ORM (Object-relational-mapping)
O framework django, por meio do seu ORM (Mapeamento Objeto-Relacional), adiciona uma camada de abstração ao desenvolvimento de aplicações web. Ao representar modelos Python como entidades do banco de dados.
Framework Django: ORM
Essa ferramenta facilita a interação com dados, permitindo operações de banco de dados sem a necessidade de consultas SQL diretas.
from .models import Customer>>> Customer.objects.all() # retorna todos os customers (clientes)# resultado: [<Customer: Debra>, <Customer: Kasha>, <Customer: Tameka> ...]>>> Customer.objects.filter(state='CA') # retorna todos os customers do estado 'CA'# resultado: [<Customer: Kasha>, <Customer: Tameka>, <Customer: Charolette> ...]>>> Customer.objects.get(customer_id=9) # retorna um customer especifico pelo id# resultado: <Customer: Genoveva>
Python
Essa integração transparente entre a programação orientada a objetos e as consultas ao bancos de dados relacionais é fundamental para a eficiência e simplicidade que o framework django oferece aos desenvolvedores.
Views (Visões):
Processa a lógica da aplicação, interagindo com o modelo e gerando uma resposta para o usuário. As Views podem renderizar templates, retornar JSON para APIs ou executar outras ações com base nas solicitações do usuário.
from django.shortcuts import renderfrom .models import Customerdefindex(request): customers = Customer.objects.all() # --> retorno dos dados. context = {'customers': customers} # --> contexto que será passado para template.return render(request, 'myapp/index.html', context) # --> junção dos dados com a template.
Python
Logo no exemplo acima, você pode perceber toda a junção da listagem dos customers, a passagem desta listagem para o contexto que será passado para ser resera passado e renderizado na template.
Templates (Modelos de Apresentação):
Define a camada de apresentação da aplicação. Os templates utilizam a linguagem de template do framework django para criar páginas HTML dinâmicas, incorporando dados fornecidos pela View.
Ja no exemplo acima, você pode notar o uso da linguagem de template do framework django como tags {% %}. Onde será usada logica para renderizar os dados passados da view para a template, retornando como HTML puro.
URLs (Roteamento de URL):
Mapeia URLs da aplicação para funções ou classes de View específicas. O roteamento é configurado no arquivo urls.py e ajuda a direcionar as solicitações do usuário para as Views apropriadas.
Oferece uma interface administrativa pronta para uso. Os modelos registrados no admin site podem ser gerenciados de forma fácil e intuitiva, facilitando a administração do sistema.
Forms (Formulários):
Facilita a manipulação e validação de dados de formulários. Os formulários no Django podem ser gerados automaticamente a partir de modelos ou criados manualmente para processar entradas do usuário.
No framework django, middlewares são componentes que processam requisições HTTP antes de chegarem às views e também processam respostas antes de serem enviadas de volta ao cliente.
Eles fornecem uma maneira flexível de modificar o comportamento do framework django, adicionando ou removendo funcionalidades em diferentes partes do processo de processamento de uma requisição.
No django, ja existe algumas middlewares que cuidam da segurança das requisições e trata sessões para autenticação por exemplo.
E muito raro a necessidade de criar um novo middleware no framework django. Com isso, inicialmente você não precisa se preocupar com isso agora.
Static Files (Arquivos Estáticos):
Gerencia arquivos estáticos, como CSS, JavaScript e imagens. O django fornece uma estrutura organizada para armazenar e servir esses arquivos durante o desenvolvimento e produção.
Test Framework (Framework de Testes):
O django também oferece ferramentas robustas para escrever e executar testes automatizados. Os testes são fundamentais para garantir a qualidade e integridade do código.
No exemplo abaixo são criados testes do model Customer e também da view index() para entender se as funcionalidades adiciona a mesma estão funcionando corretamente.
# myapp/tests.pyfrom django.test import TestCasefrom django.urls import reversefrom .models import CustomerclassCustomerModelTest(TestCase):# testa o model Customer.defsetUp(self): Customer.objects.create(first_name="John",last_name="Doe",email="john.doe@example.com",street="123 Main St",state="CA",zip_code="12345" )deftest_customer_str_method(self): customer = Customer.objects.get(customer_id=1)self.assertEqual(customer.first_name, "John")self.assertEqual(customer.last_name, "Doe")classCustomerViewTest(TestCase):# testa se a view esta funcionando corretamente.defsetUp(self):# criação de um objeto <Customer: Jhon> Customer.objects.create(first_name="John",last_name="Doe",email="john.doe@example.com",street="123 Main St",state="CA",zip_code="12345" )deftest_index_view(self):# teste se a view retorna como requerida. response =self.client.get(reverse('index'))self.assertEqual(response.status_code, 200)self.assertContains(response, "John")self.assertTemplateUsed(response, 'myapp/index.html')
Python
Conclusão
Em síntese, o framework django representa a essência da eficiência no desenvolvimento web.
Criado a partir da necessidade de superar tarefas repetitivas, evoluiu para um framework ágil e descomplicado.
Sua arquitetura, inicialmente associada ao padrão MVC, adotou a abordagem MVT, simplificando a estrutura e centralizando responsabilidades na camada View.
Explorando os principais componentes, como Models, Views e Templates, percebemos uma engrenagem coesa que impulsiona a eficiência no desenvolvimento.
O framework django não é apenas um framework; é uma jornada técnica que capacita desde a definição de modelos até a criação de interfaces dinâmicas, redefine o cenário do desenvolvimento web de maneira pragmática e inteligente.
Django é um framework full-stack que permite aos desenvolvedores criar novas aplicações rapidamente usando seus padrões MVT/MVC.
Portanto, este post irá exemplificar como você pode criar uma aplicação de blog utilizando Django e todas as suas funcionalidades, permitindo entender como model, view e controller funcionam em conjunto com templates.
O que voce ira aprender nesta postagem:
Como criar um ambiente virtual python.
Instalação do Django no ambiente virtual.
Inicio de um projeto Django.
Criação de um Model.
Views para exibir os dados.
URLs, templates e muito mais…
Você precisara das seguintes ferramentas instaladas no seu computador para seguir este tutorial:
Para iniciar este projeto Django você precisará abrir seu IDE e adicionar uma pasta vazia a ele. Chamei essa pasta de blog-project, mas você pode nomeá-la como desejar.
Depois de adicionar o projeto ao seu IDE, certifique-se de que o terminal esteja no diretório correto para iniciar o projeto. Já que precisamos adicionar o código dentro dele pelo terminal usando pip.
1 – Preparando o ambiente virtual do projeto django
$python3-mvenvvenv
Bash
Assim que este comando criar a pasta venv você precisara adicionar novamente o seguinte comando para ativar o ambiente virtual (venv).
Unix OS: Linux ou MacOS:
$sourcevenv/bin/activate
Bash
Windows OS:
venv\Script\activate
PowerShell
Se você executou a abordagem e seguiu corretamente, seu diretório de caminho terá o nome do ambiente virtual no início dele. Por exemplo, se o diretório do caminho for nome do caminho-para-projeto/blog-project $, ele será alterado para (venv) nome-do-computador/projeto-blog $.
2 – Instalando o framework Django no ambiente virtual
Agora que você tem o ambiente pronto, você precisa instalar o framework Django nele. Em seu terminal adicione o seguinte comando:
$pipinstalldjango
Bash
Feito isso, o django será instalado, e você só precisa criar o blog-project dentro do diretório raiz.
3 – Criando projeto principal no Django
Agora que toda a configuração inicial está feita, vamos iniciar o projeto. Você precisará adicionar o seguinte comando para criar o projeto no diretório principal:
$django-adminstartprojectblog_project
Bash
Assim que você adicionar o seguinte comando ao seu terminal, uma pasta chamada blog_project será adicionada ao seu diretório com outra pasta blog_project como o controlador do Django e o arquivo manage.py.
Portanto, se você seguiu todos os passos explicados até agora, seu diretório deverá ficar assim:
Agora que todas as configurações principais já foram feitas, você pode iniciar seu projeto. Vá para a pasta blog_project/root com o comando:
$cdblog_project
Bash
Apenas um ponto aqui: Para quem é iniciante, certifique-se de ter três pastas diferentes: a pasta raiz chamada blog-project/, a pasta raiz do projeto django chamada também de blog_project/ e a pasta controllers dentro da pasta raiz django que também é chamada blog_project/. O comando acima irá direcioná-lo para a próxima pasta, a raiz do django blog_project/.
Portanto, uma vez dentro da pasta raiz do projeto Django, (a mesma que contém o arquivo manager.py), você pode executar o comando para iniciar seu projeto Django com o seguinte comando:
$pythonmanage.pyrunserver
Bash
Com o seguinte comando seu projeto será iniciado e no terminal ele irá rodar e mostrar qual porta o projeto está rodando:
No meu caso o endereço é https://127.0.0.1:8000. Clique nele ou copie e cole em seu navegador para ver o resultado:
Se tudo correr bem você poderá ver a imagem acima no endereço fornecido pelo terminal.
5 – Criando um novo app para o seu projeto django
Agora é hora de criar seu primeiro aplicativo para o seu projeto Django. Mas antes de adicionar o comando para criar o aplicativo, você precisa abrir um novo terminal para executar o projeto, já que o último terminal está sendo usado para executar o aplicativo.
Portanto, abra um novo terminal no IDE, ative novamente o ambiente virtual no diretório raiz e mude o diretório para a raiz do Django, que é uma pasta à frente.
Então, após ativar seu ambiente virtual e alterar o diretório novamente em seu segundo terminal, adicione o seguinte comando para criar o app:
$pythonmanage.pystartappblog
Bash
Agora que você criou o diretorio/pasta chamada blog o seu diretório deve parecer desta maneira:
blog-project/# <---------- primeiro diretorio criado manualmente||___blog_project/# <----- diretorio criado pelo comando django-admin startapp ...||||__blog_project/# <----- diretorio criado pelo comando django-admin startapp ...|||____init__.py|||__settings.py|||__urls.py|||__wsgy.py||||||___blog/# <------ diretorio criado agóra||||||__migrations/|||_____init__.py|||___admin.py|||___apps.py|||___models.py|||___views.py||||__manage.py||__venv/
Bash
Agora, você precisa adicionar o aplicativo blog criado recentemente nas configurações do projeto. Portanto, em blog_project/settings.py adicione o blog na configuração INSTALLED_APP:
INSTALLED_APPS= ['django.contrib.admin','Django.contrib.auth','django.contrib.contenttypes', 'django.contrib.sessions', 'Django.contrib.messages','Django.contrib.staticfiles','blog', # <------ Novo ]
Python
Adicionando o app blog no INSTALLED_APPS o django irá reconhecer o aplicativo que iremos trabalhar.
6 – Migrando as tabelas padrão do django
Antes de entrarmos no código, precisamos criar um superusuário para o projeto.
O superusuário tem a capacidade de gerenciar modelos na parte administrativa do site.
Muito bem, vamos criá-lo, no seu terminal adicione o seguinte comando:
$pythonmanage.pycreatesuperuser
Bash
Porém ao rodar este comando você receberá uma menssagem de error:
Você tem 18 migrações não aplicadas. O seu projeto talvez não ira funcionar perfeitamente ate você aplicar as migrações para os apps: admin, auth, contenttypes, session.
Rode o comando python manage.py migrate para aplica-as.
Então vamos la, vamos fazer isso. Se você ler a mensagem, ela diz para executar um comando, que é:
$pythonmanage.pymigrate
Bash
Deixei essa questão acima para você entender como é desenvolver uma aplicação.
Às vezes será normal receber alguns erros como esse para dizer o que não está certo. Portanto, fique sempre de olho no terminal para ver o que o Django e o python dirão se houver algo errado.
Ok, vamos voltar à criação do superusuário.
Então, após corrigir o problema de migração, adicione novamente o comando de criação de superusuário em seu terminal, logo em seguida adicione um nome para ele, eu usei o nome admin mas você pode escolher o que quiser. Você tambem terá que adicionar o seu e-mail e senha duas vezes.
NOTA: Se for a primeira vez que você cria um projeto Django, entenda que a senha não aparecerá no terminal. Basta adicioná-lo e pressionar Enter. <—————–
Agora que você já criou o superusuário, acesse o site /admin para fazer o login. Portanto, você só precisa adicionar /admin na frente da url do projeto e ele o redirecionará para a página de login.
http://127.0.0.1:8000/admin/
Depois de ser redirecionado, você verá a página de login:
Em seguida, faça login usando o nome de usuário e senha que você criou anteriormente e você será redirecionado para o site de administração.
Muito bem, agora você tem acesso a pagina de administrador como superusuário e pode fazer futuras edições em seus futuros modelos.
7 – Enviando nossa primeira mensagem para o frontend
Ótimo, agora você verá parte da funcionalidade do que o Django é capaz. Enviaremos uma mensagem de “hello world” para o frontend. Então, assim você terá uma ideia de como o Django funciona com a arquitetura MVC (model, view, controller).
No seu aplicativo blog, acesse o arquivo views.py e adicione o seguinte código:
blog/views.py
from django.shortcuts import render from django.http import HttpResponse # Create your views here. defindex(request): #<------ Novoreturn HttpResponse('hello world')
Python
A área destacada é o novo código que você deve adicionar ao arquivo views.py. Agora que você adicionou este código em seu blog/views.py, você deve dizer ao Django onde esta resposta deve aparecer. Portanto, vá para blog_project/urls.py e adicione o caminho da visualização que você criou em blog/views.py.
blog_project/urls.py:
from django.contrib import adminfrom django.urls import path from blog.views import index #<------ Novourlpatterns = [ path('', index, name='index'), #<------ Novo path('admin/', admin.site.urls)]
Python
Nesta seção, você precisará importar a função index que criou em blog/views.py e adicioná-la ao caminho como o nome index. Você também pode ver que há uma string vazia no início do caminho. Isso significa que a função e a página serão executadas como o URL principal.
Agora, depois de configurar views.py e urls.py, vá para a url principal: http://127.0.0.1:8000/ e atualize a página. Se você fez tudo certo, deverá ver um texto “hello world” no canto superior direito da tela.
NOTA: Se você encontrou algum erro, verifique o código acima e tente encontrar algum erro de ortografia, caso tenha esquecido de importar a função index para o urls.py. Além disso, verifique a última mensagem na parte inferior da mensagem de erro em seu terminal. Lá você verá o que há de errado. Se não houver erro, vamos para a próxima parte.
8 – Criando o seu primeiro model no seu projeto django
Agora é hora de você criar seu primeiro model para esta aplicação. No aplicativo blog, acesse models.py e adicione o seguinte código.
blog/modelos.py:
from django.db import models # Create your models here.classArticle(models.Model): title = models.CharField(max_length=100) body = models.TextField() date = models.DateTimeField(auto_now_add=True) thumb = models.ImageField(blank=True)def__str__(self): returnself.title
Python
O código acima é um comando para criar uma tabela chamada Article (Artigo) no django sqlite, com title (título), body (corpo), date (data), thub (imagem) e a função __str__ para exibir o título do blog na página de administração. Olhando atentamente para esta classe, você verá que cada um desses campos possui métodos diferentes.
Por exemplo:
Para o title (título) você verá um método Charfield() com comprimento de 100 caracteres. Este método permitirá adicionar caracteres simples (string), como títulos, nomes ou frases.
O body (corpo) possui um método diferente chamado TextField(). Como o próprio nome já diz, ele serve para armazenar maiores quantidades de caracteres, como textos.
A variável de date (data) é atribuída ao método DateTimeField(). Este método armazena a data e hora em que um novo objeto é criado.
Para o thumb (imagem), o método utilizado é ImageField(). Este campo é criado para armazenar uma imagem do objeto.
NOTA: Para o método ImageField(), você precisará instalar o Pillow para manipular as imagens adicionadas ao criar o objeto.
8.1 – Instalando o pacote Pillow para gerenciar imagens no django
Ao salvar o arquivo models.py com o qual você criou o modelo Article, você receberá um erro (caso a aplicação esteja rodando):
Terminal:
ERRORS:blog.Article.thumb: (fields.E210) Cannot use ImageField because Pillow is not installed.HINT:GetPillowathttps://pypi.org/project/Pillow/orruncommand"python -m pip install Pillow".
Bash
Portanto, seguindo a dica da mensagem acima, você precisará instalar o Pillow para poder adicionar imagens aos seus artigos. Adicione o seguinte código em seu terminal:
$pipinstallPillow
Bash
Depois de instalá-lo, você precisará configurar o settings.py para apontar (programar o caminho no django) onde as imagens serão colocadas quando você adicioná-lo no formulário do artigo.
8.2 – Configurando o caminho das imagens
No arquivo settings.py adicione o código a seguir:
blog_project/settings.py:
# No topo do arquivo.Import os...# No final do arquivo.# caminho onde devera inserir os arquivos de imagem.MEDIA_URL='/media/'# especificando o arquivo.MEDIA_ROOT= os.path.join(BASE_DIR, 'media')
Python
Após essa configuração ser feita, você precisa registrar o artigo modelo em sua página de administração.
8.3 – Registrando o modelo no site de administrador
Vá até a pasta do seu blog e no arquivo admin.py adicione o seguinte código para cadastrar o modelo Article:
blog/admin.py
from django.contrib import adminfrom .models import Article #<------ Nova linha# Register your models here. admin.site.register(Article) #<------ Nova linha
Python
Você precisará importar o modelo Article do arquivo .models e registrá-lo na página de administração.
8.4 – Criando o seu primeiro artigo na aplicação blog
Agora que você já criou o modelo Article, cadastra-lo na página de administração, vá para a página de administração e verá uma nova seção adicionada à página de administração chamada Articles:
Clique no link Articles e na próxima página, no canto superior direito clique no botão ADD ARTICLE + para adicionar uma nova postagem no blog:
Adicione um título, um corpo de texto, uma imagem e salve. Você verá que o artigo com o nome Hello World foi adicionado ao seu banco de dados e uma nova pasta chamada media foi adicionada ao seu diretório blog_project/ como blog_project/media com a imagem que você escolheu para o seu artigo.
Como você adicionou uma nova pasta, seu diretório deve ficar assim:
9- Adicionando templates e pastas estáticas para criar o frontend
Neste ponto estamos prontos para iniciar nossa parte de frontend. Crie uma nova pasta chamada templates em seu diretório raiz. Vá para /blog-project/blog_project/ e adicione o seguinte comando:
$mkdirtemplates
Bash
Assim a pasta de templates será criada, agora você precisa informar ao Django onde a pasta de templates está localizada.
Vá para settings.py e adicione o nome ‘templates’ no código do array TEMPLATES:
Você também precisará criar uma pasta estática para adicionar arquivos estáticos, como css, javascript e imagens estáticas. Você precisará seguir quase a mesma abordagem que fez para criar a pasta de modelos. Além disso, a pasta estática será colocada no mesmo local que a dos modelos. Portanto, em seu terminal adicione o seguinte comando:
$mkdirstatic
Bash
Assim, sua pasta estática (static) será criada no diretório raiz do projeto. O mesmo que os modelos. Então, agora, assim como na pasta de templates você precisará dizer ao Django que você tem uma pasta estática:
Vá para settings.py e na parte inferior do arquivo adicione o seguinte código:
Agora que você criou a pasta estática e a configurou seguindo o código acima você está pronto para ir para a próxima etapa, que é adicionar o frontend deste projeto.
NOTA: Ótimo, você está pronto para iniciar a parte frontend deste tutorial. Se tudo estiver funcionando corretamente, perfeito. Agora é a etapa em que você precisa criar os arquivos HTML e CSS onde o código será adicionado. Então, desta parte até o final vou pedir toda a atenção de você. Porque, se você perder um pequeno passo ou detalhe, poderá enfrentar alguns erros.
10- Adicionando arquivos HTML e CSS nos templates e pastas estáticas
Nesta parte você exibirá o frontend deste projeto. A partir da próxima parte começaremos a buscar dados do modelo Article que você criou na parte 8 deste tutorial e exibiremos no frontend.
10.1 – Adicionando o HTML com tags de template integradas ao Django
Os modelos e pastas estáticas que você adicionou agora serão usados para ter o arquivo base.html. O arquivo no qual será usado para armazenar todas as outras páginas que serão criadas.
Dentro da pasta de templates crie um novo arquivo chamado base.html.
Agora que você adicionou o código em base.html salve-o e vamos nos preparar para exibir esta página no frontend.
Para adicionar o código css, crie uma nova pasta chamada css dentro da pasta static e dentro da pasta css crie um arquivo css chamado style.css. O caminho para este arquivo deve ser assim:
static/css/style.css
Agora que você adicionou style.css, adicione o seguinte estilo neste arquivo:
body {padding-top:56px; }.carousel-item {height:65vh;min-height:300px;background:no-repeatcentercenterscroll;-webkit-background-size:cover;-moz-background-size:cover;-o-background-size:cover;background-size:cover; }.portfolio-item {margin-bottom:30px; }
CSS
After the creation the templates and css folders as well as the style.css file, your working directory should look like this:
Note: make sure you have added the files within the right folders.
10.2 Explaining template tags
Antes de prosseguirmos, você deve ter visto algumas tags incomuns no arquivo base.html. Eles são usados para finalidades diferentes. Por exemplo, a tag de modelo {% load static %}.
Trata-se simplesmente de carregar os arquivos que são colocados em uma pasta estática (static). No código HTML acima, em você pode localizar um href=”{% static ‘css/style.css’ %} dentro de um link. Sem a tag de modelo {% load static %} na parte superior, seus arquivos estaticos não serão carregados.
Outras tags de modelo colocadas no meio do arquivo base.html são {% block content %} {% endblock content %}. Essas duas tags de template, como o nome diz, servem para estender outros templates dentro deste bloco html. Abordaremos mais sobre eles antecipadamente neste tutorial.
Se você é novo no Django, você deve estar se perguntando: o que essas tags de template fazem? A resposta é: eles são usados para trazer diferentes funcionalidades aos templates html. Como loops, condicionais, funcionalidades personalizadas de carregamento, inclusão de outras partes de HTML, como barras de navegação ou rodapés e etc.
Agora que você já adicionou o template base.html nos templates e criou a pasta css e o arquivo style.css, é hora de mostrar o resultado no frontend.
No seu views.py você precisa alterar a função de índice para o seguinte código:
blog/views.py:
from django.shortcuts import render# Create your views here.defindex(request):return render(request, 'base.html')
Python
O atalho render() solicitará o template base.html e retornará a resposta ao navegador com base na URL. Portanto, se você se lembra da parte 7, adicionamos a função de índice ao caminho raiz. Em outras palavras, você só precisará salvar o views.py e recarregar a página na url http://127.0.0.1:8000/ para ver o resultado do template no frontend.
Então, se você fez tudo certo, o resultado deve ser assim:
12. Mostrando postagens do blog no frontend
Fantástico, que bom que ficou até aqui. Esta é uma das partes mais difíceis do tutorial. Portanto, para as próximas partes, recomendo que você preste atenção redobrada aos pequenos detalhes para não enfrentar nenhum erro.
12–1. Crie uma nova pasta de modelos no aplicativo de blog
Vá para o aplicativo blog e crie uma nova pasta chamada templates e adicione um modelo chamado posts.html. Por enquanto estará vazio.
12–2. Atualize a função de index() para reconhecer o modelo de postagens e adicionar os artigos lá
Na sua função index() você pode ver que ela está renderizando o modelo base.html. Mude para posts.html. Depois disso, você precisa importar o modelo Article para o seu views.py e atribuí-lo como articles. Além disso, você precisa criar um dicionário com o nome articles para que o modelo de postagens reconheça as postagens que são adicionadas a este modelo.
blog/views.py:
from django.shortcuts import render# import Article model from .models import Article #<------ NOVO# Create your views here.defindex(request): # adicionar artigosarticles = Article.objects.all() #<------ NOVOreturn render(request, 'posts.html', {'articles':articles}) #<------ CODIGO NOVO
Python
12–3. Exibindo as postagens no frontend
Agora é a hora de você encontrar os primeiros posts aparecendo no frontend do seu projeto. Então, se você já adicionou um artigo no formulário Artigos da página de administração, vá até lá e adicione alguns com imagens. Caso contrário, eles não serão exibidos quando esta etapa for implementada.
Sendo assim, adicione este código ao modelo posts.html que você criou na etapa 12–1:
Você percebeu que não há nenhuma função executando o modelo base.html, mas ele está sendo executado mesmo assim? Na verdade, ele está sendo renderizado porque o modelo posts.html o está estendendo. Portanto, ele pode ser usado para carregar todos os outros modelos, se desejar.
Você também percebeu que neste momento o código HTML está dentro das tags {% block content %} {% endblock content %}, e não como no base.html? Agora você pode entender como esses modelos funcionam. Um é usado para estender enquanto o modelo base será usado para exibir os outros modelos.
12–4. Explicando o loop “for” na template
O loop for exibirá todas as postagens do artigo adicionadas a ele no template usando a tag django loop. Você se lembrou da variável articles e do dicionário que você adicionou na função index? A variável articles será adicionada ao dicionário em views.py e o dicionário será carregado no modelo posts.html como artigos. Portanto, se você já possui um bom conhecimento de HTML poderá entender que todos os campos do template de artigos foram exibidos nos lugares ou elementos certos.
O article.body no elemento <p>, article.title no elemento <a>(sem href por enquanto) e o article.thum.url dentro do <img src=””>. No entanto, você pode perceber que a imagem não apareceu embora esteja implementada.
NOTA: O |slice:50 dentro do article.body não deve exibir todo o conteúdo do blog em um cartão. Apenas para mostrar parte do corpo nele. Esteja ciente também de que o href será adicionado posteriormente para vincular à funcionalidade de detalhes da postagem e ao URL.
12–5. Corrigindo a imagem que não aparece na template posts.html
Para corrigir esse problema, você precisará adicionar o seguinte código ao seu urls.py.
blog_projects/url.py:
from django.contrib import admin from django.urls import path from blog.views import index # import for display imagefrom django.conf import settings #<------ NOVOfrom django.conf.urls.static import static #<------ NOVOurlpatterns = [ path('admin/', admin.site.urls), path('', index, name='index'),]if settings.DEBUG: #<------ NOVO urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_URL) urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Python
Você precisará importar configurações e estática de conf.url e iterar os urlpatterns com STATIC_URL, MEDIA_URL e MEDIA_ROOT das configurações. Se você tiver alguma dúvida você pode conferir a documentação do Django aqui para saber mais sobre essas configurações.
Após isso, atualize a página do seu navegador onde o aplicativo é exibido e verifique se as postagens aparecem. Se sim, você verá a tela assim:
13. Criando a página de detalhes do post
Esta é a última parte do nosso tutorial. Nesta seção você aprenderá como exibir a página de detalhes de cada postagem do blog individualmente clicando em um dos cartões que representam cada postagem.
13–1. crie a função post_detail
Em blog/views.py você precisará criar uma função chamada post_detail() e criar uma variável chamada detalhes atribuída a um método chamado get_object_or_404(ModelName, id=id).
A funcionalidade deste método funciona de forma que por exemplo quando você clica em um cartão ele irá até o ModelName que está atribuído e buscará o id do item e retornando o objeto. Se você quiser entender mais como funciona o método get_object_or_404 você pode dar uma olhada na documentação aqui.
Então, a função post_detail() ficará assim:
blog/views.py
from django.shortcuts import render, get_object_or_404 #<------ NOVO IMPORT# import Article modelfrom .models import Article# Create your views here.defindex(request):# add article. articles = Article.objects.all()return render(request, 'posts.html', {'articles':articles})defpost_detail(request, id): #<------ NOVO# mostrar a pagina de detalhe. details = get_object_or_404(Article, id=id)return render(request, 'details.html', {'details':details})
Python
NOTA: Para a função post_detail, você também precisará adicionar id como parâmetro para que a função retorne o resultado que é criar uma página de detalhes para cada postagem do blog. Além disso, você precisará adicionar um novo modelo html chamadodetails.html que será criado posteriormente e exibirá a variável de detalhes em um dicionário para ser reconhecida no modelo. Se ficou um pouco complicado para você, dê uma boa olhada nesta função e siga cada passo para você entender. :)
13–2. adicione o URL post-details e importe a função post_detail()
Nesta parte você precisará criar um novo caminho de URL. Em seguida, acesse blog_project/urls.py e adicione o seguinte código destacado:
Nesta parte você precisará importar a função post_detail() que você criou em blog/views.py pois ela precisará de uma funcionalidade para ser usada na nova url que você irá criar. Agora, crie este novo caminho de URL chamado post-detail e adicione ao novo padrão de URL, pois int é o formato do id (inteiro).
13–3. Adicionando o href para acionar a função post_detail() e explicação
Antes de ir para a explicação de como url e post_detail() funcionam juntos, vá para posts.html e adicione o seguinte código em cada href:
href="{% url 'postDetail' id=article.id %}"
HTML
Este código permitirá que o Django acione a função post_detail quando você clicar em um dos cartões do modelo posts.html. Enviando você para a páginadetails.html.
Aqui você pode ver o que acontece quando você clica em um cartão postal:
O detalhe da postagem visto acima vai para a url e verifica qual é o padrão da url e também qual função o trata;
Então, depois de ver que post_detail é a função que trata a url, ela obtém o id do objeto no banco de dados e o retorna no template.
Você recebe a resposta no navegador com a postagem exata em que clicou.
13–4. crie o modelodetails.html
Vá para o modelo details.html vazio e adicione o código a seguir. Se você ainda não o criou, acesse blog/templates e adicione o seguinte código dentro dele.
A ideia do código acima é semelhante à do modelo posts.html. No entanto, neste modelo você não tem o loop for. Em vez disso, na função post_detail() você obterá título, thumb, corpo e data.
Portanto, se você adicionou o código corretamente, ao clicar em um dos cartões do modelo posts.html no navegador você obterá esta página:
Muito bem, você terminou este tutorial usando Django. Você pode usar este código para implementar mais recursos como autenticação de usuário, adicionar categorias diferentes ou até mesmo criar um cms. Use sua imaginação e o que você aprendeu neste tutorial para fazer outras aplicações com Django. Obrigado por ficar até aqui e se você tiver algum comentário deixe um comentário abaixo e eu responderei sua pergunta.
Na industria de desenvolvimento de software, a distinção entre Front-End e Back-End é crucial. Front-End, responsável pela interface do usuário, e Back-End, encarregado das funcionalidades nos bastidores, desempenham papéis distintos mas complementares, no ciclo de vida de uma aplicação. Neste artigo, exploraremos as diferenças fundamentais entre Frameworks Front-End e Back-End, entendendo as responsabilidades específicas, tecnologias envolvidas, desafios de integração e as tendências atuais que moldam o desenvolvimento de software.
Responsabilidades no Front-End
O desenvolvimento Front-End concentra-se nas facetas visuais e interativas das aplicações web. É aqui que as ideias e designs ganham vida, proporcionando aos usuários uma experiência envolvente. As principais responsabilidades do Front-End incluem:
Implementação de Designs: Transformar designs concebidos por designers em elementos visuais reais na página web, garantindo consistência e fidelidade ao layout proposto.
Experiência do Usuário (UI/UX): Criar interfaces intuitivas e agradáveis ao usuário, otimizando a navegação e a interação para proporcionar uma experiência positiva.
Linguagens-Chave:Utilização de HTML para estruturação, CSS para estilização e JavaScript para adicionar interatividade e dinamismo à interface.
Compatibilidade com Navegadores: Garantir que a aplicação seja acessível e funcional em diferentes navegadores, considerando as nuances de renderização e comportamento.
O Front-End é a primeira camada que os usuários veem e interagem, tornando a sua eficiência crucial para o sucesso de qualquer aplicação web. A escolha de frameworks como React, Angular ou Vue.js pode impulsionar a produtividade dos desenvolvedores Front-End ao oferecer estruturas robustas e ferramentas poderosas.
Funcionalidades no Back-End
Enquanto o Front-End se destaca pela apresentação visual, o Back-End assume um papel nos bastidores, gerenciando as funcionalidades que não são visíveis aos olhos do usuário. Aqui estão as principais responsabilidades do Back-End:
Gerenciamento de Banco de Dados: Armazenamento, recuperação e manipulação eficiente de dados em bancos de dados, garantindo integridade e segurança.
Lógica de Negócios: Implementação das regras de negócios da aplicação, processando solicitações do cliente e tomando decisões baseadas em lógica específica.
Autenticação e Segurança: Lidar com a autenticação de usuários, autorizações e implementação de práticas de segurança para proteger dados sensíveis.
Linguagens Back-End: Uso de linguagens como Python, Java, Node.js ou Ruby, dependendo das necessidades específicas do projeto.
O Back-End é crucial para garantir a funcionalidade, segurança e eficiência da aplicação, realizando tarefas complexas que impactam diretamente a experiência do usuário, mesmo que não sejam visíveis a olho nu. Frameworks Back-End, como Django, Express.js e Ruby on Rails, oferecem estruturas organizadas para facilitar o desenvolvimento nessas áreas.
Comunicação entre Front-End e Back-End
A comunicação eficiente entre as camadas Front-End e Back-End é essencial para a operação harmoniosa de uma aplicação web. Aqui estão os principais aspectos dessa interação:
APIs (Interfaces de Programação de Aplicações): APIs são utilizadas para estabelecer uma ponte de comunicação entre o Front-End e o Back-End. Elas definem como os componentes de software devem interagir, permitindo a troca estruturada de dados.
Formato Comum de Dados: JSON (JavaScript Object Notation) é frequentemente adotado como o formato padrão para troca de dados entre Front-End e Back-End, proporcionando simplicidade e facilidade de leitura.
Métodos HTTP: A comunicação é realizada por meio de métodos HTTP, como GET, POST, PUT e DELETE, que indicam a natureza da requisição e a ação a ser executada no servidor.
Autenticação e Autorização: Mecanismos de autenticação, como tokens, e autorização são implementados no Back-End para garantir que apenas usuários autorizados acessem recursos específicos.
A compreensão detalhada dessa comunicação é essencial para o desenvolvimento integrado, permitindo que o Front-End solicite dados específicos e o Back-End forneça respostas dinâmicas conforme necessário. Essa interação é fundamental para a criação de aplicações web modernas e interativas.
Desafios na Integração Front-End e Back-End
A integração entre Front-End e Back-End, embora essencial, apresenta desafios significativos que os desenvolvedores enfrentam regularmente. Alguns desses desafios incluem:
Gerenciamento de Estado: Manter um estado consistente em ambas as camadas pode ser complexo, especialmente em aplicações grandes. Frameworks como Redux para React são frequentemente empregados para facilitar o gerenciamento de estado.
Sincronização de Atualizações: Garantir que as atualizações do Back-End sejam refletidas instantaneamente no Front-End, e vice-versa, requer estratégias eficientes de sincronização de dados.
Segurança da Comunicação: Proteger a comunicação entre Front-End e Back-End contra ameaças como ataques de injeção ou interceptação de dados é crítico. O uso de HTTPS e práticas seguras de codificação é vital.
Documentação Adequada: Criar e manter documentação clara e precisa das APIs é essencial para garantir que as equipes Front-End e Back-End estejam alinhadas e possam integrar-se sem ambiguidades.
Superar esses desafios exige colaboração próxima entre as equipes, uma compreensão profunda dos requisitos de ambos os lados e a adoção de práticas sólidas de desenvolvimento. Enfrentar esses obstáculos resulta em uma integração mais suave e uma experiência de usuário final aprimorada.
Tendências Atuais em Frameworks Front-End e Back-End
O panorama do desenvolvimento web está em constante evolução, com novas tendências e tecnologias moldando o modo como as aplicações são construídas. Algumas das tendências atuais em Frameworks Front-End e Back-End incluem:
Front-End:
JAMstack: Uma arquitetura que enfatiza a construção de aplicações usando JavaScript, APIs e marcação, proporcionando desempenho aprimorado e escalabilidade.
Server-Side Rendering (SSR): Técnicas que permitem ao servidor renderizar páginas do lado do cliente, melhorando a velocidade de carregamento e a otimização para motores de busca.
Component Libraries: A prevalência de bibliotecas de componentes, como Storybook, que simplificam o desenvolvimento, promovem a reutilização e mantêm consistência visual.
Back-End:
Serverless Architecture: O uso crescente de arquiteturas sem servidor, como AWS Lambda e Azure Functions, que simplificam o gerenciamento de infraestrutura.
GraphQL: Uma alternativa eficiente às tradicionais APIs REST, oferecendo maior flexibilidade e redução de excesso de dados.
Microservices: A adoção de arquiteturas baseadas em microservices para facilitar a escalabilidade e a manutenção de sistemas complexos.
Estar atualizado sobre essas tendências permite que os desenvolvedores escolham os frameworks mais adequados para seus projetos, garantindo uma base sólida para o desenvolvimento de aplicações web modernas e eficientes.
Escolhendo os Frameworks Certos para o Desenvolvimento
A seleção adequada de frameworks Front-End e Back-End é crucial para o sucesso de um projeto. Aqui estão algumas considerações importantes ao fazer essas escolhas:
Requisitos do Projeto: Compreender claramente os requisitos específicos do projeto é fundamental. Alguns frameworks podem ser mais adequados para aplicações grandes e complexas, enquanto outros brilham em projetos menores e ágeis.
Compatibilidade e Integração: Certificar-se de que os frameworks escolhidos para o Front-End e Back-End são compatíveis e podem ser integrados sem problemas é essencial para uma operação coesa.
Comunidade e Suporte: Frameworks bem estabelecidos com comunidades ativas tendem a oferecer melhor suporte, documentação robusta e soluções para desafios comuns de desenvolvimento.
Escalabilidade e Desempenho: Avaliar a capacidade do framework de escalar conforme necessário e garantir um desempenho sólido, especialmente em ambientes de produção.
Facilidade de Aprendizado: Para equipes com diferentes níveis de experiência, escolher frameworks que possuam curvas de aprendizado razoáveis pode acelerar a produtividade.
Ao levar em consideração esses aspectos, os desenvolvedores podem tomar decisões informadas sobre os frameworks Front-End e Back-End que melhor atendem às necessidades específicas do projeto e da equipe.
Conclusão
O desenvolvimento integrado entre Front-End e Back-End é o alicerce de aplicações web modernas e eficientes. Neste artigo, exploramos as nuances dessa colaboração, desde a comunicação entre camadas até os desafios enfrentados pelos desenvolvedores.
Ao abordar a comunicação eficaz, compreender os desafios, analisar as tendências atuais e escolher os frameworks certos, os desenvolvedores estão equipados para construir aplicações web que não apenas atendam, mas superem as expectativas.
A constante evolução do cenário de desenvolvimento web destaca a importância de estar atualizado com as tendências e tecnologias emergentes. Ao abraçar práticas sólidas, como documentação adequada e colaboração próxima entre equipes, os desenvolvedores podem superar obstáculos e criar experiências digitais excepcionais.
Em última análise, a integração harmoniosa entre Front-End e Back-End não apenas impulsiona o desempenho técnico, mas também aprimora a experiência do usuário, resultando em aplicações web robustas e inovadoras.
Adentrar o universo do desenvolvimento web é iniciar uma jornada repleta de decisões técnicas importantes — e uma das mais cruciais é escolher o framework ideal para o seu projeto. Entre tantas opções disponíveis, o framework Django se destaca por sua robustez, escalabilidade e simplicidade, tornando-se uma das escolhas favoritas entre desenvolvedores Python em todo o mundo.
Nesta postagem, vamos explorar em profundidade o framework Django, comparando-o com outros frameworks amplamente utilizados e analisando seus principais diferenciais.
O objetivo é fornecer um guia prático e informativo, que te ajude a entender por que o Django continua sendo uma referência no desenvolvimento de aplicações modernas — e como ele pode se alinhar aos seus objetivos profissionais e técnicos no vasto campo do desenvolvimento web.
Django: O ponto de partida
Django, um dos frameworks web mais populares, é frequentemente apontado como o ponto de partida ideal para desenvolvedores iniciantes, graças à sua filosofia “batteries-included”.
Essa abordagem significa que o Django vem com uma série de componentes integrados e funcionalidades prontas para uso, proporcionando uma experiência completa e coesa no desenvolvimento web.
Caracteristicas do django
Uma característica distintiva do Django é seu Object-Relational Mapping (ORM) robusto. Que facilita significativamente a interação com bancos de dados. Caso você seja um iniciante e ainda esta se familiarizando com conceitos de banco de dados e manipulação de dados, o ORM do Django fornece uma camada de abstração intuitiva. Permitindo que desenvolvedores se concentrem na lógica da aplicação sem se perderem em detalhes complexos de SQL.
Além disso, o Django oferece um admin pré-construído, uma ferramenta poderosa para lidar com tarefas administrativas. Isso não apenas simplifica a criação de interfaces administrativas para as aplicações.
Mas também fornece uma visão clara da estrutura da aplicação desde o início. Para iniciantes, ter uma administração funcional pronta para uso pode ser um alívio. Pois evita a necessidade de construir essas interfaces do zero.
A comunidade ao redor do framework Django
O aspecto social do desenvolvimento também desempenha um papel crucial para aqueles que estão começando. A comunidade Django é conhecida por ser acolhedora e solidária. Fóruns ativos, grupos de discussão e recursos educacionais são facilmente acessíveis.
Proporcionando um ambiente favorável para aprendizado e resolução de dúvidas. A documentação do Django é extensa e escrita de forma clara, o que é essencial para aqueles que estão dando os primeiros passos na programação web.
A curva de aprendizado suave oferecida pelo Django é especialmente valiosa para iniciantes. A estrutura organizada do framework, juntamente com os princípios “Don’t Repeat Yourself” (DRY) e “Convention Over Configuration”, proporcionam uma base sólida para o desenvolvimento consistente e eficiente. Esses princípios orientam os desenvolvedores na direção certa, promovendo boas práticas de codificação desde o início.
Caso você queira saber mais sobre os beneficios de se aprender a usar o Django nos seus projetos da uma olhada neste poste aqui.
Flask – Leve e Flexível
Em contraste com o abordagem “batteries-included” do Django, Flask se destaca como uma alternativa leve e flexível no ecossistema de frameworks web. Projetado para ser minimalista, o Flask oferece aos desenvolvedores uma estrutura simples. Permitindo maior liberdade na escolha das ferramentas e bibliotecas que desejam incorporar em seus projetos.
Caracteristicas do Flask
Uma das características marcantes do Flask é sua simplicidade. Ao optar por uma estrutura mínima, Flask coloca a ênfase na extensibilidade. Permitindo que os desenvolvedores escolham e integrem componentes conforme necessário.
Isso é particularmente benéfico para iniciantes que desejam ter controle direto sobre cada aspecto de sua aplicação, experimentando com diferentes bibliotecas para entender como elas se encaixam em um projeto específico.
A ausência de um ORM embutido no Flask (assim como no django ou outros frameworks) pode inicialmente parecer uma lacuna, mas para alguns desenvolvedores. Isso representa uma oportunidade de escolher livremente a solução de persistência de dados que melhor atenda às necessidades de seu projeto.
Embora essa flexibilidade exija um pouco mais de trabalho em termos de configuração, também proporciona uma experiência mais personalizada, onde os desenvolvedores têm total controle sobre as interações com o banco de dados.
Flask vs Django
Em relação ao desenvolvimento de interfaces administrativas, Flask adota uma abordagem diferente do Django. Em vez de um admin pré-construído, Flask deixa essa camada ao critério do desenvolvedor. Isso pode ser uma vantagem para aqueles que desejam construir interfaces administrativas altamente personalizadas ou que preferem usar soluções externas.
A comunidade em torno do Flask também é ativa, embora em escala menor em comparação com Django. No entanto, essa comunidade mais compacta muitas vezes resulta em interações mais diretas e personalizadas, proporcionando aos iniciantes um ambiente de aprendizado mais íntimo.
Express.js – Para Entusiastas JavaScript
Express.js, um framework para Node.js, é uma escolha poderosa para entusiastas do JavaScript, especialmente familiarizados com o desenvolvimento front-end. Sua abordagem minimalista e flexível facilita a transição para o desenvolvimento server-side.
Ao seguir o princípio “You build it how you want it” (Você constroi da maneira que voce quiser), Express.js concede aos desenvolvedores a liberdade de escolher bibliotecas e ferramentas conforme suas necessidades, promovendo uma experiência altamente personalizada.
A compatibilidade com o ecossistema npm (Node Package Manager) simplifica a incorporação de funcionalidades adicionais, enquanto a comunidade Express.js oferece amplo suporte e recursos online para aprendizado e desenvolvimento contínuo.
Ruby on Rails – Convenção sobre Configuração
Ruby on Rails (RoR) destaca-se pelo princípio “Convention over Configuration” (Convenção sobre Configuração). Tornando-o uma escolha atraente para iniciantes e desenvolvedores que valorizam uma estrutura organizada e predefinida. Essa filosofia elimina a necessidade de configurações extensas. Permitindo que os desenvolvedores se concentrem mais na lógica da aplicação do que em detalhes de configuração.
Caracteristicas unicas do framework Ruby on Rails
O RoR utiliza uma estrutura de diretórios padronizada, onde os arquivos são organizados de acordo com convenções específicas. Isso promove consistência entre os projetos e facilita a navegação. Tornando mais fácil para os iniciantes entenderem a estrutura de um aplicativo Ruby on Rails.
Um benefício notável do RoR é seu ORM integrado, o ActiveRecord. Isso simplifica significativamente as interações com bancos de dados. Permitindo que os desenvolvedores realizem operações CRUD (Create, Read, Update, Delete) de maneira intuitiva. Sem a necessidade de escrever consultas SQL complexas.
O RoR também inclui um poderoso sistema de geração de código chamado “scaffold”. Que cria automaticamente modelos, controladores e visões com base no modelo de dados especificado. Essa funcionalidade acelera o desenvolvimento. Permitindo que iniciantes criem rapidamente protótipos de suas aplicações e ganhem compreensão prática da estrutura MVC (Model-View-Controller) utilizada pelo RoR.
Em relação ao desenvolvimento de interfaces administrativas, o RoR oferece o Rails Admin. Uma ferramenta que gera automaticamente uma interface administrativa baseada no modelo de dados. Isso proporciona uma solução rápida para tarefas administrativas padrão, poupando tempo e esforço.
Conclusão
Na jornada do desenvolvimento web, a escolha do framework certo é crucial. Django oferece uma experiência completa, Flask destaca-se pela flexibilidade, Express.js facilita a transição JavaScript, e Ruby on Rails proporciona eficiência com “Convenção sobre Configuração”.
A decisão final deve refletir as preferências individuais e os objetivos do projeto. Independentemente da escolha, a comunidade ativa em torno desses frameworks oferece suporte valioso para uma jornada contínua de aprendizado no vasto universo do desenvolvimento web.
Na minha opinião particular, eu iniciaria pelo Flask, aprenderia todas as partes principais do framework. Como fazer requisições, usar uma ORM ,conectar com o banco de dados e usar o sistema de template (Jinja). Logo em seguida eu pularia para o Django, pois ele seria uma versão “melhorada” do Flask. Com os mesmos pontos (ex: Python, ORM, linguagem de template, wsgi etc… ) 😉
O Django é um framework de desenvolvimento web gratuito e de código aberto escrito em Python, que promove o rápido desenvolvimento e o design limpo e pragmático.
Com isso, ele pode ser usado para construir quase qualquer tipo de aplicação web, desde sistemas de gerenciamento de conteúdo a redes sociais.
Mais ainda, esta é uma ferramenta confiável e robusta para projetos pessoais ou profissionais, graças à contínua adoção do mercado.
Ele é uma escolha atraente para desenvolvedores iniciantes e experientes, devido à sua relativa facilidade de aprendizado e uso, além de oferecer uma série de benefícios e recursos notáveis.
Sendo assim, neste artigo, vamos explorar os benefícios do Django para iniciantes, como começar a usá-lo e seus recursos notáveis.
Veremos também empresas que usam o framework Django e onde aprender mais sobre ele.
Se você está procurando uma maneira rápida e fácil de criar aplicativos web, o Django é uma excelente escolha.
Benefícios do Django para iniciantes
O Django oferece uma variedade de benefícios significativos para desenvolvedores iniciantes. Tornando-se uma escolha atraente para aqueles que desejam iniciar no desenvolvimento web.
Alguns dos principais benefícios incluem:
Rápido Desenvolvimento: O Django adota a filosofia de “baterias incluídas”, fornecendo uma ampla gama de funcionalidades prontas para uso. Isso permite que os desenvolvedores criem aplicativos web de forma eficiente, sem a necessidade de desenvolver cada recurso do zero.
Design Limpo e Pragmático: Seguindo o padrão de arquitetura MVT (Model-View-Template), o Django promove a organização e a manutenção do código, facilitando a compreensão e aprimoramento das aplicações desenvolvidas.
Segurança Integrada: O framework possui recursos de segurança integrados, tais como proteção contra ataques de injeção de SQL, CSRF (Cross-Site Request Forgery) e XSS (Cross-Site Scripting), garantindo a proteção das aplicações web desenvolvidas.
Comunidade Ativa e Recursos Disponíveis: O Django conta com uma comunidade ativa e acolhedora, oferecendo acesso a documentação detalhada, fóruns de discussão e bibliotecas de terceiros. Isso proporciona um ambiente propício para aprendizado, suporte técnico e troca de conhecimentos.
Esses benefícios combinados fazem do Django uma excelente opção para desenvolvedores iniciantes. Que buscam uma plataforma robusta, segura e com recursos integrados para o desenvolvimento de aplicações web.
Como começar a usar o Django
Começar a usar o Django é uma jornada empolgante para qualquer aspirante a desenvolvedor.
Este framework é conhecido por sua robustez, facilidade de uso e comunidade vibrante.
Sendo assim, tornando-o uma escolha ideal para projetos web de todos os tipos.
Antes de mergulhar no Django, é essencial ter o Python instalado no seu computador.
Isso pode ser feito com um único comando no terminal ou prompt de comando dependendo do seu sistema operacional.
Com o Django instalado, você está pronto para criar seu primeiro projeto.
A criação de um novo projeto Django é simples.
Basta usar o comando django-admin startproject nome_do_projeto para criar a estrutura inicial do seu projeto.
Este comando gera uma série de pastas e arquivos que formam a base do seu projeto Django.
Em seguida, você pode navegar até o diretório recém-criado e começar a explorar o código.
Um aspecto fundamental do Django é a capacidade de criar aplicativos independentes dentro do projeto.
Com o Django, os aplicativos são como módulos reutilizáveis que executam funções específicas.
Criando um aplicativo para o projeto
Para criar um novo aplicativo, você pode usar o comandopython manage.py startapp nome_do_aplicativo.
Com o aplicativo criado, você pode desenvolver suas funcionalidades.
Isso envolve definir modelos, que são representações das tabelas do banco de dados.
Criando views para processar as solicitações dos usuários e renderizar templates que mostram o conteúdo para o usuário final.
Este framework web segue o padrão de arquitetura MTV (Model-Template-View), o que facilita a organização e a estruturação do seu código.
À medida que você avança no desenvolvimento do seu projeto, executar o aplicativo localmente é fundamental para testar e visualizar as alterações feitas.
Mais ainda ele oferece um servidor de desenvolvimento embutido que pode ser iniciado com o comando python manage.py runserver.
Para quem está começando, existem inúmeros recursos disponíveis para aprender mais sobre o Django.
Além disso, fóruns de discussão, grupos de usuários e tutoriais em vídeo são excelentes para obter insights valiosos e solucionar problemas específicos.
Começar com o Django é o primeiro passo para criar projetos web poderosos e eficientes.
Com uma vasta gama de recursos disponíveis e uma comunidade pronta para ajudar, a jornada de aprendizado se torna incrivelmente estimulante e recompensadora.
Empresas que usam Django
Django se estabeleceu como um dos frameworks mais confiáveis e renomados para o desenvolvimento web. Atraindo uma vasta gama de empresas que confiam em sua eficiência e flexibilidade.
Com sua estrutura sólida e recursos poderosos, o Django se tornou a escolha preferida para diversas aplicações em muitas indústrias.
Grandes players da internet, como o Instagram, aproveitaram os benefícios deste framework para construir plataformas robustas e escaláveis.
Instagram
A história de sucesso do Instagram é um exemplo impressionante de como o Django é capaz de sustentar milhões de usuários. E gerenciar uma enorme quantidade de dados de maneira eficiente.
Pinterest
Outra empresa proeminente que adotou o Django é o Pinterest.
Com a necessidade de uma estrutura ágil e adaptável para lidar com a complexidade de compartilhamento de imagens e dados.
O Pinterest confiou no Django para oferecer uma experiência de usuário fluida e responsiva.
Mozilla
A Mozilla, conhecida por seus produtos de software de código aberto e sua dedicação à privacidade e segurança na web, também adota o Django em vários de seus projetos.
A capacidade do Django de oferecer soluções robustas e confiáveis alinha-se perfeitamente com a filosofia da Mozilla.
Eventbrite
Eventbrite e Disqus são mais exemplos de empresas que incorporaram o Django em seus sistemas.
O Eventbrite, uma plataforma de gerenciamento de eventos online, aproveita a flexibilidade do Django. Para fornecer uma experiência de usuário rica e personalizada.
Disqus
O Disqus, um sistema de gerenciamento de comentários online, confia no Django para garantir a segurança e a funcionalidade de sua plataforma.
Além dessas empresas notáveis, muitas outras, em setores variados, como entretenimento.
Educação, saúde e muito mais, optam pelo Django framework por sua capacidade de acelerar o desenvolvimento e garantir um desempenho sólido e confiável para suas aplicações web.
A popularidade crescente do Django continua a solidificar seu lugar como um dos principais frameworks web no cenário global de desenvolvimento de software.
Conclusão
Explorar os fundamentos do desenvolvimento web através do Django revela não apenas a versatilidade do framework.
Mas também sua impressionante presença no mundo empresarial.
Empresas de renome como Instagram, Pinterest, Mozilla e muitas outras confiaram no Django para alimentar suas aplicações web, evidenciando sua robustez, escalabilidade e adaptabilidade.
Ao iniciar seus estudos nos conceitos fundamentais do Django, desde seu uso prático até seu impacto no cenário empresarial. É evidente que sua flexibilidade e recursos poderosos tornam-no uma escolha dominante para o desenvolvimento web moderno.
A comunidade ativa e a documentação detalhada tornam o Django acessível mesmo para iniciantes, abrindo as portas para uma jornada promissora no mundo do desenvolvimento web.
À medida que mais empresas reconhecem o potencial deste framework, é claro que ele continuará a desempenhar um papel significativo no desenvolvimento de aplicações web inovadoras e escaláveis.
Com sua estrutura sólida e apelo universal, o Django mantém seu lugar como um dos frameworks mais confiáveis e adotados no mundo do desenvolvimento web.