Curso de Django.
- Clone este repositório;
- Crie um virtualenv com Python 3;
- Ative o virtualenv;
- Instale as dependências;
Rode as migrações;- Deixe de ser preguiçoso e crie sua modelagem de banco na mão rodando o script SQL ;) ;
Instalação do pacote python3-venv e limpando o cache de pacotes em seguida:
sudo apt -y install python3-venv && sudo apt clean
Clonar o repositório git:
git clone https://github.com/juliano777/probar_django.git
Ir para o diretório do repositório:
cd probar_django
Verificando o conteúdo do script venv_active.sh:
cat venv_active.sh
#!/bin/bash
# Cria o ambiente virtual:
python3 -m venv .venv
# Habilita o ambiente virtual:
source .venv/bin/activate
# Atualiza o pip:
pip install -U pip
# Instala dependências:
pip install -r requirements.txt
Utilizar o script para operações de preparo do ambiente:
. ./venv_active.sh
Criação do projeto Django:
django-admin startproject probar_django
Renomear o diretório que tem o nome do projeto para src:
mv probar_django src
Criação do contêiner de banco de dados PostgreSQL:
docker container run -itd \
--name db_probar_django \
--hostname db-probar-django.local \
-p 5432:5432 \
juliano777/postgres
Verificar o contêiner criado:
docker container ls | fgrep 'probar_django'
5092c2516f13 juliano777/postgres "docker-entrypoint.s…" 33 seconds ago Up 33 seconds 0.0.0.0:5432->5432/tcp db_probar_django
Criação de variável de ambiente para senha do usuário de banco do Django:
read -sp 'Digite a senha do usuário: ' PWD_DB_USER_DJANGO
Criar um role usuário no servidor de banco de dados:
docker container exec -it db_probar_django psql -c \
"CREATE ROLE user_django LOGIN ENCRYPTED PASSWORD '${PWD_DB_USER_DJANGO}'"
Criação da base de dados:
docker container exec -it db_probar_django psql -c \
'CREATE DATABASE db_probar_django OWNER user_django'
Criação do schema (namespace) para metadados do Django:
docker container exec -it db_probar_django \
psql -U user_django -d db_probar_django -c \
'CREATE SCHEMA ns_django;'
Via recurso de shell heredoc, criar o arquivo de configurações de banco de dados:
cat << EOF > src/probar_django/db.conf
DB_HOST = 'localhost'
DB_NAME = 'db_probar_django'
DB_USER = 'user_django'
DB_PASSWORD = '${PWD_DB_USER_DJANGO}'
DB_PORT = 5432
DB_OPTIONS = '-c search_path=ns_django,public'
EOF
Também via heredoc, gerar o arquivo .env que terá algumas variáveis que não serão versionadas:
cat << EOF > src/probar_django/.env
SECRET_KEY = '`python3 secret_key_gen.py`'
DEBUG = True
ALLOWED_HOSTS = '.localhost', '127.0.0.1', '[::1]'
EOF
Edite o arquivo de configuração principal do projeto:
vim src/probar_django/settings.py
Adicione o import:
from configobj import ConfigObj
Logo após a declaração da variável BASE_DIR
adicione as linhas:
# Database configuration file
DB_CONF_FILE = f'{BASE_DIR}/probar_django/db.conf'
DB_CONFIG = ConfigObj(DB_CONF_FILE)
# Environment variables file
ENV_FILE = f'{BASE_DIR}/probar_django/.env'
ENV_CONFIG = ConfigObj(ENV_FILE)
Substitua os valores de SECRET_KEY
, DEBUG
e ALLOWED_HOSTS
conforme segue:
SECRET_KEY = ENV_CONFIG['SECRET_KEY']
DEBUG = ENV_CONFIG['DEBUG']
ALLOWED_HOSTS = ENV_CONFIG['ALLOWED_HOSTS']
Substitua toda a parte referente a banco de dados (Database) pelo seguinte conteúdo:
# Database
# https://docs.djangoproject.com/en/2.2/ref/settings/#databases
# Database connection parameters
DB_HOST = DB_CONFIG['DB_HOST']
DB_NAME = DB_CONFIG['DB_NAME']
DB_USER = DB_CONFIG['DB_USER']
DB_PASSWORD = DB_CONFIG['DB_PASSWORD']
DB_PORT = DB_CONFIG['DB_PORT']
DB_OPTIONS = DB_CONFIG['DB_OPTIONS']
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': DB_NAME,
'USER': DB_USER,
'PASSWORD': DB_PASSWORD,
'HOST': DB_HOST,
'PORT': DB_PORT,
'OPTIONS': {'options': DB_OPTIONS},
}
}
cd src
python3 manage.py migrate
python3 manage.py runserver