Passo a passo de como funciona o framework:
- Navegador faz uma requisição para o servidor no endereço de IP
- A requisição chega e é encaminhada para a porta que o programa Django está
rodando
- Django compara os caminhos recebidos na requisição com os disponíveis no
arquivo urls.py (se cria um path no arquivo urls.py geral para o do programa em si,
no caso o urls.py do Notes, que por sua vez vai chamar uma view)
- O arquivo views.py é onde são definidas funções que vão criar as views para o
usuário. Essas funções recebem o request como argumento e retornam a view em
HTML/Templates que serão recebidas pelo navegador e renderizadas no site.
Comandos:
- Para rodar o servidor o codigo é "python manage.py runserver"
- Para se gerar a estrutura básica de um projeto Django: "django-admin startproject
getit ." - esse comando inicia o projeto chamado getit
- Para migrações (uma vez): "python manage.py makemigrations"
- Para migrações (a cada atualização): "python manage.py migrate"
- Para criar admin: "python manage.py createsuperuser"
- Para criar venv, no vscode apertar "command + shift + p" e digitar "create
environment"
- Para criar novo app "python manage.py startapp note" chamando note
Início de uma aplicação:
- Adicione o novo app na pasta de settings em INSTALLED APPS, como o seguinte
exemplo: "nomeapp.apps.NotesConfig".
- No arquivo models.py devem ser declaradas as colunas do banco de dados e uma
função str que define com o objeto será exibido, ou seja, a função é chamada
quando é necessária uma representação em string do objeto
- Após concluir as mudanças no banco de dados, deve-se migrar (utilizando os
comandos descritos acima) essas alterações.
- Para administrar o banco de dados é necessário criar um usuário admin (com o
comando descrito acima) e dar um run server.
- No arquivo admin.py, dentro do diretório da aplicação o seguinte código deve ser
transcrito
URLS e Views:
- No arquivo pai de URLS, adiciona-se esse código:
- Cria-se um arquivo urls dentro do diretório da aplicação. Nesse arquivo filho URLS
(que no caso é o "notes.urls") são definidos o resto dos caminhos para as views:
- O path de deletar e editar é diferente justamente pela necessidade de se coletar o ID
do objeto que será gerenciado.
- No diretório da aplicação, após se criar o arquivo de views.py se cria uma função
para cada view que se deseja exibir em algum momento na aplicação.
- Dentro do arquivo da aplicação se cria outro de templates. Nele se cria um arquivo
com o nome da aplicação e o outro chamado registration. Dentro do com o nome da
aplicação são colocados os arquivos de html das views desejadas + base:
- Quando se deseja criar um formulário no html, no form da coisa é preciso adicionar
method = post e action = "/".
Adicionando Arquivos Estáticos:
- Dentro do arquivo da aplicação criar um uma pasta chamada static. Dentro dessa
pasta criar uma pasta com o nome da aplicação. Dentro dela criar uma pasta
chamada css e outra chamada img. Dentro da img serão carregadas as imagens e
dentro da css se cria o style.css.
- Para esses arquivos funcionarem no html eu coloco a tag de load static.
Sistema de Login:
- Dentro da pasta registration criada anteriormente se coloca o html do login, no caso,
login.html
- Além disso, no arquivo pai de URLS, adicione a path para login.
- Adicione isso nas settings do projeto:
- No codigo base de html deve se adicionar um trecho de codigo:
- Esse @login_required antes da definição da função faz com que o usuário seja
redirecionado automaticamente para a página de login se não estiver logado
Alterando Banco de Dados:
- Para se relacionar uma tabela a outra (no caso a do usuário que tem o seu ID e a da
nota) se cria um foreign key (no caso o id_author).
- Para se alterar um modelo dessa forma, se da um makemigration e dps um migrate
no terminal.
- Digite 1 como resposta para o que for perguntado quando a migração for realizada.
- Se coloca o autor em views.py como o user quando vai se criar uma nova nota e
também na hora de filtrar as notas deixar apenas aquelas do autor em questão.