O que é o Django?

Django é um framework web de alto nível, gratuito e de código aberto, escrito em Python, projetado para facilitar o desenvolvimento rápido de sites seguros e escaláveis. Ele segue o padrão "baterias incluídas", fornecendo ferramentas prontas para autenticação, painel administrativo e banco de dados, sendo ideal para projetos complexos e amplamente utilizado por empresas como Instagram.

Python e PIP são necessários, todos os comandos rodam no Terminal (Command Prompt)

Dicas

- Toda vez após instalar um pacote com o pip/Python, rode

pip freeze > requirements.txt

- Voce pode baixar todos os requerimentos com o comando

pip install -r requeriments.txt

- Significado das pastas

templates - html 
static - css

- É recomendado o uso do VsCode para navegar e editar arquivos.

Começando

Crie uma pasta master no diretório desejado.

Ex:

C:\Users\usuario\Documents\master
e continue o tutorial dentro desta pasta.

VirtualEnv (Ambiente Virtual)

Antes de começar, isolamos as dependências do projeto:

pip install virtualenv
python -m virtualenv venv

Para ativar (Windows):

venv\Scripts\activate

Instalando o Django

Com o ambiente ativo, execute:

pip install django

Para criar o projeto:

django-admin startproject setup .

Configurando Timezone e Linguagem

Vá até o arquivo e edite (com VsCode ou bloco de notas)

/setup/settings.py

Altere os valores respectivos para

LANGUAGE_CODE = 'en-us''pt-br'
TIME_ZONE = 'UTC''America/Sao_Paulo'

Protegendo Variáveis de Ambiente

Instale o pacote dotenv

pip install python-dotenv
lembre-se de rodar depois da instalação
pip freeze > requirements.txt

Agora no cabeçalho de /setup/settings.py adicione as seguintes importações

import os 
from pathlib import Path
from dotenv import load_dotenv
evite deixar importações repetidas.

Crie um arquivo .env no mesmo nível que /setup

Agora copie o valor da sua SECRET_KEY em /setup/settings.py e cole o no arquivo .env e remova as aspas.

Exemplo:

 SECRET_KEY = 'django-insecure-3%g$tl^y%9#'SECRET_KEY = django-insecure-3%g$tl^y%9#

Apague o valor da SECRET_KEY de /setup/settings.py e troque por

SECRET_KEY = str(os.getenv('SECRET_KEY')

Agora para evitar que esse tipo de dado sensível vá junto com os outros arquivos para o Github, utilizaremos o arquivo .gitignore, para isso, acesse o site: gitignore.io django.

Crie um arquivo na raiz chamado .gitignore e copie e cole tudo que você viu no gitignore.io django.

Pronto! Agora você já protegeu todos seus tipos de arquivos sensíveis quando for efetuar um commit no Github.

Seu Primeiro App

Um projeto Django pode ter diversos apps, para criar um app, execute o comando:

python manage.py startapp nome_do_app

Agora para que o Django saiba que você tem um App, vá até o arquivo

/setup/settings.py
e na seção INSTALLED APPS escreva o nome do seu app.

Ex:

INSTALLED_APPS = [
...
'nome_do_app',
]

Criando uma View

No arquivo:

/nome_do_app/views.py
Altere o arquivo para
from django.shortcuts import render

def index(request)
return render(request,'nome_do_app/index.html)

Este código define que ao receber uma requisição no método index, será retornado uma resposta do tipo Render (vai renderizar a página).

Isolando URLS

Crie um arquivo em:

/nome_do_app/
chamado urls.py e coloque este código:
from django.urls import Path
from nome_do_app.views import index

urlpatterns =[
path('',index,name='index')
]

O atributo name serve de identificador, o Django utilizará disso para navegar entre templates.

Agora edite o arquivo do projeto:

/setup/urls.py
para
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
path('admin/',admin.site.urls),
path('',include('nome_do_app'.urls'))
]

Templates

Agora na raiz, crie uma pasta chamada templates. Uma boa prática é isolar os templates por app, neste caso, criaremos uma pasta nome_do_app dentro de:

/templates/ → /templates/nome_do_app

No arquivo:

/setup/settings.py
na parte de TEMPLATES na chave 'DIRS' altere para o valor
'DIRS': [os.path.join(BASE_DIR, 'templates')],

Crie um arquivo .html dentro de:

templates/nome_do_app/
com o código desejado.
Você pode baixar um arquivo html aqui.

Arquivos Estáticos

Crie uma pasta static em:

/setup/
agora em:
/setup/settings.py
e em abaixo do STATIC_URL coloque as seguintes diretivas:
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'setup/static')
]

STATIC_ROOT = os.path.join(BASE_DIR, 'static')

Você pode baixar um arquivo css aqui.

Após colocarmos nosso arquivos estáticos (imagens, css, js etc.) dentro da pasta /setup/static, precisamos sinalizar para que o Django colete estes arquivos, para isso rode:

python manage.py collectstatic
após isso, o Django vai mapear todos estes arquivos para uma pasta na raiz /static este arquivo não deve ser modificado.