Trabalhar no ambiente virtual Django (Linux):
$ source /opt/virtualenv/django/bin/activate
Trabalhar no ambiente virtual Django (Windows):
workon django
Criando um projeto:
$ django-admin startproject Adocao
No Adocao/settings.py alterar configurações para o português do Brasil:
LANGUAGE_CODE = 'pt-br' TIME_ZONE = 'America/Sao_Paulo'
Executar a criação de tabelas no banco e do conteúdo necessário para o gerenciamento do próprio Django
$ python manage.py migrate
Crie um Super Usuário para você (administrador):
$ python manage.py createsuperuser
Iniciar o servidor Django (padrão porta 8000)
$ python manage.py runserver
Se preferir, pode utilizar outra porta
$ python manage.py runserver 8080 (para definir, por exemplo, a porta 8080)
Outro IP
$ python manage.py runserver x.x.x.x:8000 (para rodar na rede local/Internet)
Ou de forma automática com seu IP da rede local
$ python manage.py runserver 0:8000 (para rodar na rede local/Internet)
Criando seu primeiro módulo (app) no projeto
$ python manage.py startapp cadastros
Registre seu app no seu projeto
É necessário ativar seu app no projeto lá no arquivo Adocao/settings.py.
INSTALLED_APPS = [
'cadastros.apps.CadastrosConfig',
'django.contrib.admin',
...
Criando a primeira tela com classes (método mais utilizado desde a versão 2), conhecido como Class-based Views para realizar as tarefas do seu sistema, como inserir, cadastrar, exibir uma página, etc.
No arquivo Adocao/cadastros/views.py importe a classe genérica para exibir uma página simples e depois crie sua primeira classe para “renderizar” um template (HTML):
from django.views.generic import TemplateView # Create your views here. class IndexView(TemplateView): template_name = "index.html"
Como funcionam as classes dentro do “views”:
class NomeDaPaginaView(ClassePai):
template_name = "sua_pagina.html"
Criando um template em HTML para ser usado pelas Views
Primeiro altere a configuração do arquivo Adocao/Adocao/settings.py lá na configuração dos templates:
Procure por: ‘DIRS’: [],
E troque por: ‘DIRS’: [ os.path.join(BASE_DIR, ‘templates’) ],
Agora crie uma pasta chamada ‘templates‘ dentro da pasta da sua aplicação ‘animais’. Dentro dela você pode criar as páginas HTML que vai usar como suas telas (templates). Por exemplo: animais/templates/index.html
Definindo as URLS do seu sistema
Por padrão, os endereços ficam registrados nos arquivos urls.py. Cada app pode ter seus próprios endereços e o seu Projeto (Adocao) também pode ter as suas.
Primeiro crie o arquivo “urls.py” dentro do seu app: animais/urls.py.
Faça a importação da biblioteca que gerencia as urls e das classes/métodos criados nos views.
from django.urls import path from .views import IndexView
Crie uma url dentro do vetor de urls desse app. Os parâmetros são (nessa ordem): endereço, método/classe do views, nome da url no sistema.
urlpatterns = [
path('', IndexView.as_view(), name="index"),
]
Exemplo para criar novas URLS no seu projeto:
path('endereço_de_url/algo_mais/', NomeDaSuaView.as_view(), name="index"),
Adicione as URLS do app como URLS do projeto
Edite o arquivo Adocao/urls.py e inclua a biblioteca “include” depois de importar a biblioteca “path”.
from django.urls import path, include
Dentro da sua lista de urls, adicione um nome padrão para importar todas as suas urls do app:
urlpatterns = [
# Vai incluir todas as URLS do app animais neste padrão
path('', include('animais.urls')),
path('admin/', admin.site.urls),
]
Se deixar ‘’ (aspas vazias) não precisa digitar nada na URL pra aceitar este padrão.
Definindo o diretório STATIC para armazenar seu CSS, imagens, JS, etc.
Dentro do diretório Adocao, raiz do projeto e não junto com settings.py, crie uma pasta chamada “static” e coloque lá todo seu css, js, imagens, etc.
Somente os arquivos HTML ficam dentro da pasta template de cada app porque eles podem ser exclusivos daquele app. A ideia da pasta static é disponibilizar as imagens, js e css para todos os apps e não somente um.
No arquivo Adocao/settings.py acrescente uma configuração para o Django procurar a pasta static na raiz do seu projeto (você pode ter várias pastas statics no seu PC):
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.2/howto/static-files/
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
]
Na primeira linha de todo arquivo HTML você precisa importar a pasta static do seu projeto:
{% load static %}
Agora é só usar conforme o exemplo abaixo para referenciar o local dela:
<img strc="{% static "img/example.jpg" %}" alt="My image"/>
Sempre em vez de colocar o caminho real, deve ser utilizado o esquema do static acima para referenciar algo que tem lá.
Reaproveitando um template
No Django é possível reutilizar um arquivo html (template) reescrevendo apenas algumas partes dele. Para isso, crie blocos de código no seu arquivo de modelo. Por exemplo:
modelo.html
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="utf-8">
…
</head>
<body>
{% block menu %}
<div class=”header”>
...
</div>
{% endblock %}
{% block conteudo %}
<div class=”container”>
...
</div>
{% endblock %}
{% block rodape %}
<div class=”footer”>
...
</div>
{% endblock %}
</body>
</html>
No seu arquivo que deve ser igual a este anterior, pasta “estender” ele como se fosse uma herança e depois só é necessário reescrever os blocos que você quer alterar. Exemplo:
pagina_inicial.html
{% extends 'modelo.html' %}
{% block conteudo %}
<div class="container">
<div class="row">
<div class="col-sm pt-5">
<h3>Mah oe :D</h3>
</div>
</div>
</div>
{% endblock %}