Django Framework

Neste capítulo, discutiremos sobre o Django Framework em detalhes.

Django é uma estrutura da web MVT usada para construir aplicativos da web. A enorme estrutura da Web do Django vem com tantas “baterias incluídas” que os desenvolvedores costumam se surpreender ao ver como tudo funciona junto. O princípio por trás da adição de tantas baterias é ter funcionalidades comuns da web no próprio framework, em vez de adicionar este último como uma biblioteca separada.

Uma das principais razões por trás da popularidade do framework Django é a enorme comunidade Django. A comunidade é tão grande que um site separado foi dedicado a ela, onde desenvolvedores de todos os cantos desenvolveram pacotes de terceiros, incluindo autenticação, autorização, sistemas CMS completos com Django, add-ons de e-commerce e assim por diante. Existe uma grande probabilidade de que o que você está tentando desenvolver já foi desenvolvido por alguém e você só precisa incluir isso em seu projeto.

Por que você deve usar Django?

Django é projetado de forma a incentivar os desenvolvedores a desenvolver sites de forma rápida, limpa e com design prático. A abordagem prática do Django para fazer as coisas é onde ele se destaca da multidão.

Se você está planejando construir um aplicativo altamente personalizável, como um site de mídia social, Django é uma das melhores estruturas a serem consideradas. A força do Django está em sua interação entre os usuários ou sua capacidade de compartilhar diferentes tipos de mídia. Uma das grandes vantagens do django é sua capacidade de utilizar grande suporte baseado na comunidade, o que lhe dá um terceiro altamente personalizável pronto para usar plug-ins em seus aplicativos.

Abaixo estão os dez principais motivos para escolher Django para desenvolvimento web -

Pitão

Python é indiscutivelmente uma das linguagens de programação mais fáceis de aprender por causa de suas construções de linguagem simples, estrutura de fluxo e sintaxe fácil. É versátil e executa sites, aplicativos de desktop e aplicativos móveis incorporados em muitos dispositivos e é usado em outros aplicativos como uma linguagem de script popular.

Pilhas Incluídas

Django vem com bibliotecas comuns que são essenciais para construir funcionalidades comuns como roteamento de URL, autenticação, um mapeador objeto-relacional (ORM), um sistema de modelos e migrações de esquema db.

Administrador integrado

Django tem uma interface de administração embutida que permite a você lidar com seus modelos, permissões de usuário / grupo e gerenciar usuários. Com a interface do modelo instalada, não há necessidade de um programa de administração de banco de dados separado para todas as funções, exceto as avançadas.

Não fica no seu caminho

Criar um aplicativo Django não adiciona clichês e funções desnecessárias. Não há importações obrigatórias, bibliotecas de terceiros e nenhum arquivo de configuração XML.

Escalável

Django é baseado no padrão de design MVC. Isso significa que todas as entidades como db (banco de dados), código de back-end e front-end são entidades individuais. O Django nos permite separar o código da mídia estática, incluindo imagens, arquivos, CSS e JavaScript que compõem o seu site.

Django oferece suporte a uma lista completa de bibliotecas de terceiros para servidores web, cache, gerenciamento de desempenho, clustering e balanceamento. Uma das vantagens que o Django oferece é o suporte para os principais aplicativos e serviços de e-mail e mensagens, como ReST e OAuth.

Batalha testada

O Django teve o código aberto pela primeira vez em 2005. Após 12 anos de crescimento, o Django agora não só administra sites de publicação de notícias, mas também administra toda ou parte de grandes empresas globais como Pinterest, Instagram, Disqus, Bitbucket, EventBrite e Zapier. Isso o torna uma estrutura da web robusta e confiável para trabalhar.

Grande suporte de pacote

Por causa de seu grande apoio à comunidade e grande rede de desenvolvedores, existe uma grande possibilidade de que tudo o que você pretende fazer já foi feito antes. Grande comunidade internacional de desenvolvedores contribui para a comunidade lançando seus projetos como pacotes de código aberto.

Um desses repositórios desses projetos é o site do pacote Django. Atualmente, os pacotes Django listam mais de 3400 aplicativos Django reutilizáveis, sites e ferramentas para usar em nossos projetos Django.

Desenvolvido ativamente

Um dos maiores riscos associados ao projeto de código aberto é sua sustentabilidade. Não podemos ter certeza se vai durar muito.

Não existe esse risco com Django, pois ele tem 12 anos. Seus lançamentos consistentes, versões mais novas / melhores e comunidade ativa estão crescendo a cada dia com uma grande equipe principal de colaboradores voluntários que mantêm e melhoram a base de código todos os dias.

Lançamentos estáveis

Projetos de software de código aberto como o Django são, em muitos casos, ativamente desenvolvidos e mais seguros do que o software proprietário da concorrência, pois muitos desenvolvedores o desenvolvem e testam todos os dias. No entanto, a desvantagem de um projeto de software de código aberto é a ausência de uma base de código estável para um desenvolvimento comercialmente viável.

No Django, temos versões de suporte de longo prazo (LTS) do software e um processo de lançamento definido, conforme mostrado na imagem abaixo -

Documentação de primeira classe

Desde o primeiro lançamento, os desenvolvedores Django certificaram-se de que deviam estar disponíveis documentos abrangentes adequados e que os tutoriais eram de fácil compreensão.

Quem está usando Django?

Por causa da força única do Django, existem vários sites populares que são construídos com Python no topo da estrutura Django. Abaixo estão alguns dos principais sites que são total ou parcialmente construídos com base no Django.

Disqus

É um dos sites de hospedagem de comentários de blog mais preferidos em todo o mundo. É fácil de integrar com os CMS (sistemas de gerenciamento de conteúdo) mais populares como o WordPress e muitos outros através do Disqus. Lidando com uma base de usuários de mais de 50 milhões, Django é capaz de satisfazer os proprietários de sites para que alcancem suas comunidades.

A cebola

O site Onion, que fornece um local online para seu jornal satírico, Django fornece a estrutura para isso.

Bitbucket

O Bitbucket é como o GitHub, um serviço de hospedagem de repositório de controle de versão. A única diferença entre o Bitbucket e o GitHub é que o Bitbucket hospeda repositórios mercuriais, enquanto o GitHub hospeda repositórios git. Como milhões de usuários estão associados ao Bitbucket, todos os serviços que o bitbucket fornece (como criar um repo, enviar seu código, adicionar colaboradores, commits, pull request, etc.) devem ser estáveis. Django é responsável por executar o site bitbucket.

Instagram

O Instagram é um aplicativo de rede social criado especialmente para quem adora compartilhar fotos e vídeos com todos os amigos. Atualmente tem muitas celebridades no Instagram para ficar mais perto de seus fãs. O framework Django também está executando o Instagram.

Mozilla Firefox

O segundo navegador mais usado no mundo depois do Google Chrome é o Mozilla. Agora a página de ajuda do Mozilla é construída com o framework Django.

Pinterest

Milhões de usuários em todo o mundo descobrem suas novas ideias e inspiração no Pinterest. O Pinterest está usando o framework Django (modificações feitas de acordo com seus requisitos) para executá-lo.

NASA

O site oficial da National Aeronautics and Space Administration é um lugar para milhões de usuários visitarem e conferirem as notícias, imagens, vídeos e podcasts fornecidos pela agência de estreia. Django desenvolve algumas partes específicas do site oficial da NASA.

The Washington Post

Se existe um jornal influente no mundo, certamente é o Washington Post. O site do The Washington Post é uma fonte de notícias online extremamente popular para acompanhar seu jornal diário. Sua enorme quantidade de visualizações e tráfego foi facilmente tratada pelo framework Django da web.

Reddit presentes

O popular site Reddit lançou uma plataforma de troca de presentes anônima e encontro chamada Reddit Gifts. O site conecta usuários de todo o mundo e facilita a troca de presentes entre eles. A estrutura da web do Django potencializa suas funcionalidades.

Prezi

Prezi é uma alternativa baseada em nuvem para Microsoft PowerPoint construída na estrutura Django. O site oferece uma tela virtual que pode ser manipulada e ampliada e reduzida. Isso fornece uma visão completa da apresentação, em vez de slides individuais.

Instalando e criando um projeto e aplicativo Django

Antes de instalar o Django, temos que nos certificar de que o Python está instalado. Supondo que você esteja usando o virtualenv, uma simples instalação pip django deve ser suficiente.

Instalando ambiente virtual e Django

Abaixo está o processo de instalação do ambiente virtual e Django em seu ambiente Windows -

Para verificar se o Django está instalado corretamente, digite o código fornecido abaixo -

Criando Projeto Django

Assim que a instalação for concluída, precisamos criar um projeto Django.

Executar o comando abaixo em sua máquina Windows criará o seguinte projeto django -

django-admin startproject my_project_name

Digitar dir mostrará um novo arquivo e um novo diretório, conforme mostrado acima.

manage.py- manage.py é um arquivo Python executável em linha de comando que é apenas um wrapper em torno do django-admin. Ajuda-nos a gerir o nosso projecto, que também está implícito no seu nome.

Com isso, ele criou um diretório chamado, myFirstDjangoProjectdentro de myFirstDjangoProject que representa a raiz de configuração do nosso projeto. Vamos explorar isso muito mais profundamente.

Configurando Django

Ao chamar o diretório myFirstDjangoProject de “raiz de configuração”, queremos dizer que este diretório contém os arquivos necessários para a configuração geral de nosso projeto Django. Praticamente tudo fora deste diretório será focado exclusivamente na “lógica de negócios” associada aos modelos, visualizações, rotas do projeto, etc. Todos os pontos que conectam o projeto levarão até aqui.

  • __init__.py - Está vazio e muda o diretório para um pacote Python importável.

  • settings.py - Como o nome sugere, é o local onde a maioria dos itens de configuração serão definidos.

  • urls.py - Os URLs são definidos com urls.py. Com isso, não precisamos escrever explicitamente cada URL para o projeto neste arquivo. No entanto, temos que informar ao Django sobre onde as URLs foram declaradas (ou seja, precisamos vincular outra URL em urls.py).

  • Wsgi.py - É para ajudar o aplicativo em produção e é semelhante a outros aplicativos como Flask, Tornado, Pyramid, que expõe algum objeto “app”.

Definindo as configurações

Uma olhada em settings.py revelará seu tamanho considerável - e esses são apenas os padrões. Outras coisas que precisamos cuidar são os arquivos estáticos, banco de dados, arquivos de mídia, integração em nuvem ou outras dezenas de maneiras que um projeto Django pode ser configurado. Vamos entender alguns pontos mencionados no arquivo settings.py -

  • BASE_DIR- Isso é útil para localizar arquivos. Dentro do arquivo setting.py, o parâmetro BASE_DIR define o caminho absoluto para o diretório base.

  • SECRET_KEY- É usado para fazer hashes. Em geral, usamos secret_key para cookies, sessões, proteção csrf e tokens de autenticação.

  • DEBUG - Podemos configurá-lo para o projeto em execução no modo de desenvolvimento ou produção.

  • ALLOWED_HOSTS- Fornecemos a lista de nomes de host por meio dos quais nosso aplicativo está sendo servido. No modo de desenvolvimento, é opcional definir; entretanto, na máquina de produção, precisamos definir nosso projeto Django.

  • INSTALLED_APPS- É a lista de “aplicativos” Django que estão instalados e rodando em nosso projeto Django. Django embutido fornece seis aplicativos instalados da seguinte forma -

    • 'django.contrib.admin'

    • 'django.contrib.auth'

    • django.contrib.

    • django.contrib.sessions

    • django.contrib.messages

    • django.contrib.staticfiles

  • MIDDLEWARE- Ajuda nosso projeto Django a funcionar. É uma classe Python que se conecta ao processamento de solicitação / resposta django.

  • TEMPLATES- Define como o documento deve ser exibido no frontend. Os templates Django são usados ​​para produzir qualquer formato baseado em texto.

  • WSGI_APPLICATION- Qualquer servidor que configuramos precisa saber onde está o arquivo WSGI. Caso você esteja usando um servidor externo, ele procurará em suas próprias configurações. Por padrão, ele aponta para objetos em wsgi.py.

  • DATABASES- Ele configura os bancos de dados que nosso projeto Django está acessando atualmente. É obrigatório definir o banco de dados padrão. No caso de definirmos o banco de dados de nossa escolha, precisamos mencionar algumas coisas relacionadas ao banco de dados como - HOST, USER, PASSWORD, PORT, NAME do banco de dados e MOTOR apropriado.

  • STATIC_URL- É o URL a ser usado ao se referir a arquivos estáticos localizados em STATIC_ROOT. Por padrão, é Nenhum.

No entanto, podemos precisar adicionar um caminho para arquivos estáticos. Vá até o final do arquivo e, logo abaixo da entrada STATIC_URL, adicione uma nova chamada STATIC_ROOT conforme mostrado abaixo -

myFirstDjangoProject/settings.py

STATIC_URL = '/ estático /'

STATIC_ROOT = os.path.join (BASE_DIR, 'estático')

Configurando um Banco de Dados

Existem muitos softwares de banco de dados diferentes que podem armazenar dados para o seu site. Usaremos o padrão, sqlite3.

Isso já está configurado na parte fornecida abaixo de seu myFirstDjangoProject/settings.py -

DATABASES = {
   'default': {
      'ENGINE': 'django.db.backends.sqlite3',
      'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
   }
}

Para criar um banco de dados para nosso blog, vamos executar o seguinte no console - python manage.py migrate (precisamos estar no diretório myFirstDjangoProject que contém o arquivo manage.py.

Você obterá a seguinte saída se tudo correr bem -

Iniciando o servidor web

Você precisa estar no diretório que contém o arquivo manage.py. No console, podemos iniciar o servidor web executando python manage.py runserver da seguinte maneira -

Agora tudo o que você precisa fazer é verificar se o seu site está funcionando. Abra seu navegador (Firefox, Chrome, Safari, Internet Explorer ou qualquer outro que você use) e digite este endereço -

http://127.0.0.1:8000/

ou

http://localhost:8000/ # Como nosso servidor web está rodando apenas em nossa máquina local.

Parabéns! Você acabou de criar seu primeiro site e executá-lo usando um servidor web!

Enquanto o servidor da web estiver em execução, você não verá um novo prompt de linha de comando para inserir comandos adicionais. O terminal aceitará o próximo texto, mas não executará novos comandos. Isso ocorre porque o servidor da web é executado continuamente para ouvir as solicitações recebidas.

Modelos Django

Estamos tentando criar um modelo Django que irá armazenar todas as postagens em nosso blog. Mas para ter certeza de que funciona, precisamos aprender sobre objetos.

Objetos

Objetos são uma coleção de propriedades e ações. Vamos entender isso com um exemplo. Suponha que queremos modelar um gato, vamos criar um objeto chamado Gato que possui propriedades como cor, idade, humor (bom / ruim / sonolento) e dono.

Então o Gato tem algumas ações: ronronar, arranhar ou alimentar.

Cat 
-------- 
color 
age 
mood 
owner 
purr() 
scratch() 
feed(cat_food) 
CatFood 
-------- 
taste

Então, basicamente, estamos tentando descrever coisas reais no código com propriedades (chamadas de propriedades do objeto) e ações (chamadas de métodos).

Como estamos construindo um blog, precisamos de algum conteúdo de texto e um título. Também é necessário ter o nome do autor, data de criação e também a data de publicação.

Portanto, nosso blog terá os seguintes objetos -

Post 
-------- 
title 
text 
author 
created_date 
published_date

Também precisamos ter algum método que publique essa postagem. Como agora sabemos o que é um objeto, podemos criar um modelo Django para nossa postagem no blog.

Um modelo é um tipo especial de objeto no Django e é salvo no banco de dados. Vamos armazenar nossos dados no banco de dados SQLite.

Criação de um aplicativo

Para manter tudo claro, criaremos um aplicativo separado dentro de nosso projeto. A seguir, tentaremos criar um aplicativo da web de blog executando o comando simples mencionado abaixo.

Agora, notaremos que um novo diretório myBlog é criado e contém vários arquivos agora. Os diretórios e arquivos em nosso projeto devem ser os seguintes -

Depois de criar um aplicativo, também precisamos dizer ao Django para usá-lo. Fazemos isso no arquivo myFirstDjangoProject / settings.py.

INSTALLED_APPS = [
   'django.contrib.admin',
   'django.contrib.auth',
   'django.contrib.contenttypes',
   'django.contrib.sessions',
   'django.contrib.messages',
   'django.contrib.staticfiles',
   'myBlog',
]

Criação de um modelo de postagem de blog

No myBlog/models.py arquivo, definimos todos os objetos chamados Modelos - este é um lugar no qual definiremos nossa postagem no blog.

Vamos abrir myBlog / models.py, remover tudo dele e escrever o código da seguinte maneira -

Primeiramente, importamos algumas funcionalidades de outros arquivos chamando de ou importando. Com isso, em vez de copiar e colar as mesmas coisas em todos os arquivos, podemos incluir algumas partes comfrom and import.

class Post(models.Model) - Esta linha define nosso modelo (é um objeto).

  • class é uma palavra-chave especial que indica que estamos definindo um objeto.

  • Post é o nome do nosso modelo. Sempre comece um nome de classe com uma letra maiúscula.

  • models.Model significa que o Post é um modelo Django, então Django sabe que deve ser salvo no banco de dados.

Agora vamos discutir sobre as propriedades que definimos acima: título, texto, data_criada, data_publicada e autor. Para fazer isso, precisamos definir o tipo de cada campo.

  • models.CharField - É assim que você define o texto com um número limitado de caracteres.

  • Models.TextField - Isso é para texto longo sem um limite.

  • Models.DateTimeField - Isso é para data e hora.

  • Models.ForeignKey - Este é um link para outro modelo.

Definimos uma função / método com def e publicar é o nome do método.

Os métodos geralmente retornam algo. Aqui, quando chamamos __str __ (), obteremos um texto (string) com o título do Post.

Criação de tabelas para modelos em seu banco de dados

A etapa final é adicionar um novo modelo ao nosso banco de dados. Primeiro, temos que deixar o Django entender que fizemos algumas mudanças em nosso modelo. Vamos fazer o mesmo em nossa janela de console com o comandopython manage.py make migrations myBlog como mostrado abaixo -

Em seguida, o Django prepara um arquivo de migração que agora devemos aplicar ao nosso banco de dados. Em nosso console, podemos digitar:python manage.py migrate myBlog e a saída deve ser a seguinte -

Nosso modelo Post está agora em nosso banco de dados.

Django Admin

Para adicionar, editar e deletar as postagens que acabamos de modelar, estamos usando Django admin.

Então, vamos abrir o myBlog/admin.py file e coloque o conteúdo abaixo neste -

Primeiramente, importamos (incluímos) o modelo Post definido no capítulo anterior. Para tornar nosso modelo visível na página de administração, precisamos registrar o modelo com admin.site.register (Post).

Para fazer o login em um site de administração, você precisa criar um superusuário - uma conta de usuário que tem controle sobre tudo no site. Então pare o servidor da web e digite python na linha de comandomanage.py createsuperusere pressione Enter.

Ok, então é hora de olhar nosso modelo Post. Lembre-se de executar o servidor python manage.py run no console para executar o servidor web. Vá para o seu navegador e digite o endereçohttps://127.0.0.1:8000/admin/.Faça login com as credenciais que acabamos de escolher. Então você deve ver o painel de administração do Django conforme abaixo -

Vá para Postagens e experimente um pouco. Você pode adicionar muitas postagens de blog e conteúdos de qualquer lugar. Seu blog será parecido com isto -

Esta é apenas uma visão geral do Django e podemos criar um blog com apenas algumas linhas de código.