Criando vários settings para um projeto Django

Vamos aprender a criar um settings para cada ambiente.
Copie o arquivo settings.py e cria uma pasta settings e dentro da pasta crie o arquivo base.py. Lembre de apagar o arquivo settings.py.

Arquivo exemplo project/settings/base.py, não esta completo:

import os
from django.utils.translation import gettext_lazy as _
from django.core.management.utils import get_random_secret_key
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

LANGUAGE_CODE = "pt-BR"

LANGUAGES = [
    ('pt-BR', _('Portuguese')),
    ('en', _('English')),
    ('es', _('Spanish')),
]

TIME_ZONE = "UTC"
USE_I18N = True
USE_L10N = True
USE_TZ = True

Agora crie o arquivo de project/settings/production.py:

import os
from .base import *


DEBUG = False

DATABASES = {
    "default": {
        "ENGINE": os.getenv("POSTGRES_ENGINE"),
        "NAME": os.getenv("POSTGRES_NAME"),
        "USER": os.getenv("POSTGRES_USER"),
        "PASSWORD": os.getenv("POSTGRES_PASSWORD"),
        "HOST": os.getenv("POSTGRES_HOST"),
        "PORT": os.getenv("POSTGRES_PORT"),
    }
}
MEDIA_URL = "http://media.{}/".format(os.getenv("DOMAIN"))
STATIC_URL = "http://static.{}/".format(os.getenv("DOMAIN"))

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.0/howto/static-files/

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

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "project/static"),
]

# tinymce
TINYMCE_JS_ROOT = os.path.join(STATIC_ROOT, "path/to/tiny_mce")

Agora crie o arquivo de project/settings/local.py:

import os
from .base import *


DEBUG = True

DATABASES = {
    'default': {
        "ENGINE": os.getenv("POSTGRES_ENGINE"),
        "NAME": os.getenv("POSTGRES_NAME"),
        "USER": os.getenv("POSTGRES_USER"),
        "PASSWORD": os.getenv("POSTGRES_PASSWORD"),
        "HOST": os.getenv("POSTGRES_HOST"),
        "PORT": os.getenv("POSTGRES_PORT"),
    },
}

MEDIA_URL = "/media/"
STATIC_URL = "/static/"

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.0/howto/static-files/

MEDIA_ROOT = os.path.join(BASE_DIR, '..', "media")

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
]

Exemplo do docker-compose.yml:

version: "3.9"
   
services:
  db:
    image: postgres
    volumes:
      - ./data/db:/var/lib/postgresql/data
    env_file: 
      - environments/local/postgresql.env
    ports:
      - "5432:5432"
    expose:
      - 5432
  web:
    build: .
    command: python manage.py runserver --settings=project.settings.local 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db
    env_file: 
      - environments/local/postgresql.env
      - environments/local/django.env

Agora o docker-compose ira forçar o projeto rodar com o settings.local

Lembre de alterar os arquivos manage.py e wsgi.py.

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings.local')

Agora pode criar vários settings para diversos ambiente e configurar no docker-compose de cada ambiente.

Share on telegram
Telegram
Share on twitter
Twitter
Share on facebook
Facebook
Share on linkedin
LinkedIn
Share on pinterest
Pinterest

Youtuber, Programador, investidor, fanatico em tecnologia, fã de dragon ball, artista marcial, futebolista amador e gamer nas horas vagas.

Atuando desde 2007 na área de programação web.

 

Conhecimento em diversas linguagens, frameworks e outros:

 

  • Python/Django
  • Ruby/Ruby on Rails
  • PHP, Java
  • C/C++
  • C#
  • Shellscript
  • HTML/HTML5
  • CSS/CSS3
  • JavaScript
  • Jquery, XML/JSON
  • MySQL
  • PostgreSQL
  • Oracle

 

Já atuei diversas vezes em manutenção e reparo de computadores, atualmente monto os meus por hobby.

 

Conhecimento em servidores linux, softwares já utilizados para aplicações online:

  • nginx
  • apache
  • supervisor
  • bind
  • iptables
  • gunicorn

 

Conhecimento em servidores da Amazon AWS (S3, EC2, Route53, Lambda, SQS).

 

Projeto open source que mantenho para criação de servidores com python/django e php: Acessar

 

Conhecimento em e-commerce, algumas integrações realizadas: Cielo, PagSeguro, Bcash, boleto Santander e débito online e boleto do Banco do Brasil.

 

Plataformas open source utilizadas: prestashop e wordpress.

 

Sistemas operacionais: Windows, Linux(Ubuntu, Debian e CentOS) e Mac OS X

 

Hobby em desenvolvimento de jogos utilizando Unity 3d, Unreal Engine 4, Cry Engine 5 e Game Maker.

 

Desenvolvimento de aplicativos mobile utilizando Ionic e cordova para Android e Firefox OS. 

Categorias

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *