A melhor forma de aprender DJANGO...
Olá esta postagem busca simplifcar o uso do django ao máximo para aprendizado e a elaboração de uma trilha segura e um passo-a-passo que são requisitos essenciais para executar e entender corretamente o django...
Uma vez que DJANGO é um framework que está constantemente sendo "melhorado" (e modificado), por exemplo a versão atual (na data que escrevo esta publicação) é a versão 5, a maioria dos tutoriais gratuitos (e até mesmo pagos) na internet são da versão 3 ou 4!
Por que isso acontece? Por que ainda continuam por ai? Porque a compatibilidade é praticamente a mesma, contudo uma coisinha aqui ou ali podem não funcionar. Então qual a solução?!
O python (a mesma linguagem do framework django) tem uma simples solução:
AMBIENTE VIRTUAL!
Basta criar o(a) famoso(a) "virtualenv" ou "venv" e seu arquivo: "requirements.txt" e correr pro abraço pra ser feliz e conseguir realizar tutoriais e implementá-los sem risco de erros!
"Ah mas eu quero realizar meus projetos dos tutoriais na versão mais atualizada! "
Simples, realize tudo na versão onde foi concebido dentro do "virtualenv" e depois tente reproduzir tudo em outro "venv"! E hoje podemos utlizar as ias para nos ajudar a corrigir inconsistências e os diversos foruns pela internet! Portanto aprenda e busque atualizar, porque pode inclusive te ajudar a ganhar experiência e propostas de trabalhos lucrativos!
Vamos lá?!
Sem mais delongas... vamos ao que interessa:
1. Crie uma pasta na qual vai colocar seu proejto.
2. Na pasta execute o terminal ou o vscode e o terminal dele.
3. criando um ambiente virtual python (vc precisa ter o python e o pip instalado para dar continuidade a este tutorial), no terminal dentro da pasta digite (sem aspas):
4. ativando e entrando neste ambiente, novamente no terminal digite e execute:
- "source venv/bin/activate"
5. Agora vc deve estar dentro do ambiente virtual (venv), então vamos criar o arquivo "requirements.txt", abra o arquivo e dentro digite: "Django" (para instalar a versão mais atual, se quiser uma versão específica do django para o seu projeto basta digitar por exemplo: "Django==3.2.3") e salvar.
6. execute o comando: "pip install -r requirements.txt" para instalar o Django (dentro do (venv) ambiente virtual).
*Se quiser criar o arquivo: "requirements.txt" a partir das configurações atuais da sua venv basta executar no terminal:
- "pip freeze > requirements.txt"
*talvez seja necessário instalar o pacote "pip", para verificar se é necessário, basta saber se o pip já está instalado no seu computador ou não com o comando no terminal (sem aspas):
"pip --version" se aparecer a versão voce pode apenas atualizar se estiver desatualizada: "python -m pip install --upgrade pip" (no linux, talvez precise digitar tbm: "python3".) No windows: C:> py -m pip install --upgrade pip . Para instalar se não houver: "python -m ensurepip --upgrade" (linux). Windows: "C:> py -m ensurepip --upgrade".
7. criando o projeto, digite no terminal (sempre sem as aspas):
"django-admin startproject projeto ."
Explicação: esse comando diz que você será um "administrador-django" e vai "começar um projeto" chamado: "projeto".
7.1. Apenas a título de curiosidade, com o comando: "python manage.py help" você poderá ver a lista de subcomandos existentes.
8. Executando o exemplo do projeto: por padrão o django tem uma configuração de boas-vindas ao seu próprio projeto criado, para iniciar o seu projeto e ver isso, digite no terminal:
"python manage.py runserver"
9. Após executar, o terminal vai te devolver o seu endereço local onde o projeto está "sendo rodado" que é algo do tipo: "http://127.0.0.1:8000/" vc pode clicar ou digitar no seu navegador e verá algo como um site django. Volte ao terminal e com as teclas "Crtl+c" vc desliga o servidor django e volta ao terminal "executável".
10. Agora vamos criar o nosso primeiro aplicativo do nosso projeto, para isso, novamente no terminal:
"python manage.py startapp primeiroapp"
11. Agora precisamos registrar esse aplicativo em nosso projeto, na pasta: "projeto", abra o arquivo "settings.py" e na seção "INSTALLED_APPS" adicione o seu "primeiroapp" da seguinte forma:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'primeiroapp.apps.PrimeiroAppConfig',
]
E salve tudo.
12. Criando a vizualização do seu "PrimeiroApp" no seu "projeto", dentro da pasta: "primeiroapp" abra o arquivo: "views.py" e adicione o seguinte:
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, Primeiro APP")
E salve.
13. Agora que temos: 1 projeto, 1app, 1vizualização(view), precisamos criar uma "Localizador Uniforme de Recursos", o famoso: "url". Na pasta "primeiroapp" vamos criar um novo arquivo chamado: "urls.py" e dentro dele vamos colocar:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
E salvar.
14. Por fim, para poder executar nosso aplicativo (primeiroapp) dentro do nosso projeto precisamos indicá-lo dentro do nosso projeto, portanto dentro da pasta "projeto" vamos abrir o arquivo "urls.py" possívelmente seu código após os comentários que ensinam como incluir o caminho, vai estar assim:
from django.contrib import admin
from django.urls import path
urlpatterns = [
path('admin/', admin.site.urls),
]
Vamos adicionar o "include" ao lado do: "import path" utilizando um virgula e dentro de "urlpatterns" vamos "incluir" o "caminho" da url do nosso "primeiroapp", da seguinte maneira:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('primeiroapp.urls')),
]
15. Pronto! Vamos executar nosso "primeiroapp", no terminal vamos executar o seguinte comando novamente:
"python manage.py runserver"
Abra a URL no navegador de sua preferência:
http://localhost:8000/
Este foi o "fim do começo" em criar:
1. projeto
1. app
1. view
1. url
E configurá-los para serem exibidos corretamente através do Django!
16. Continua...?