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.

Telegram
Twitter
Facebook
LinkedIn
Pinterest

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

Um pouco mais sobre mim

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. 

Procurar

Categorias

Deixe um comentário

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