Maintaining same settings.py in Windows virtualenv and heroku?
Question: Is there a way to maintain same django settings.py in both Heroku and windows
local systemI am using postgres database. I believe it is only the
DATABASE_URL set as environment variable in Heroku that is making the
difference. Is there some way I could make this work in Windows by setting
DATABASE_URL in the environment? Or correct if am wrong here. I tried setting
the DATABASE_URL in windows by setting:

set DATABASE_URL='postgres://[DB_USER]:[DB_PASS]@localhost:5432/[DBNAME]

But it is not working, I am getting error when I run syncdb -
**"ImproperlyConfigured: settings.DATABASES is improperly configured. Please
supply the ENGINE value. Check settings documentation for more details."**.
below is my settings.py file:

    
    
                # Django settings for triplanner project.
    
                DEBUG = True
                TEMPLATE_DEBUG = DEBUG
    
                ADMINS = (
                    # ('Your Name', 'your_email@example.com'),
                )
    
                MANAGERS = ADMINS
    
                DATABASES = {
                    'default': {
                        'ENGINE': 'django.db.backends.postgresql_psycopg2', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
                        'NAME': 'triplanner',                      # Or path to database file if using sqlite3.
                        # The following settings are not used with sqlite3:
                        'USER': 'akk',
                        'PASSWORD': 'admin',
                        'HOST': '',                      # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
                        'PORT': '',                      # Set to empty string for default.
                    }
                }
    
                import dj_database_url
                DATABASES['default'] = dj_database_url.config()
    
                SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
    
                # Hosts/domain names that are valid for this site; required if DEBUG is False
                # See https://docs.djangoproject.com/en/1.5/ref/settings/#allowed-hosts
                ALLOWED_HOSTS = ['*']
    
                # Local time zone for this installation. Choices can be found here:
                # http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
                # although not all choices may be available on all operating systems.
                # In a Windows environment this must be set to your system time zone.
                TIME_ZONE = 'America/Chicago'
    
                # Language code for this installation. All choices can be found here:
                # http://www.i18nguy.com/unicode/language-identifiers.html
                LANGUAGE_CODE = 'en-us'
    
                SITE_ID = 1
    
                # If you set this to False, Django will make some optimizations so as not
                # to load the internationalization machinery.
                USE_I18N = True
    
                # If you set this to False, Django will not format dates, numbers and
                # calendars according to the current locale.
                USE_L10N = True
    
                # If you set this to False, Django will not use timezone-aware datetimes.
                USE_TZ = True
    
                # Absolute filesystem path to the directory that will hold user-uploaded files.
                # Example: "/var/www/example.com/media/"
                MEDIA_ROOT = ''
    
                # URL that handles the media served from MEDIA_ROOT. Make sure to use a
                # trailing slash.
                # Examples: "http://example.com/media/", "http://media.example.com/"
                MEDIA_URL = ''
    
                # Absolute path to the directory static files should be collected to.
                # Don't put anything in this directory yourself; store your static files
                # in apps' "static/" subdirectories and in STATICFILES_DIRS.
                # Example: "/var/www/example.com/static/"
                import os
                BASE_DIR = os.path.dirname(os.path.abspath(__file__))
    
                STATIC_ROOT = 'staticfiles'
    
                # URL prefix for static files.
                # Example: "http://example.com/static/", "http://static.example.com/"
                STATIC_URL = '/static/'
    
                # Additional locations of static files
                STATICFILES_DIRS = (
                    os.path.join(BASE_DIR,'static')
                    # Put strings here, like "/home/html/static" or "C:/www/django/static".
                    # Always use forward slashes, even on Windows.
                    # Don't forget to use absolute paths, not relative paths.
                )
    
                # List of finder classes that know how to find static files in
                # various locations.
                STATICFILES_FINDERS = (
                    'django.contrib.staticfiles.finders.FileSystemFinder',
                    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
                #    'django.contrib.staticfiles.finders.DefaultStorageFinder',
                )
    
                # Make this unique, and don't share it with anybody.
                SECRET_KEY = 'w+anq)bguzp0j2d-il*2nbvtwj^f1s4_exq@u)d!^z2ccc=)(3'
    
                # List of callables that know how to import templates from various sources.
                TEMPLATE_LOADERS = (
                    'django.template.loaders.filesystem.Loader',
                    'django.template.loaders.app_directories.Loader',
                #     'django.template.loaders.eggs.Loader',
                )
    
                MIDDLEWARE_CLASSES = (
                    'django.middleware.common.CommonMiddleware',
                    'django.contrib.sessions.middleware.SessionMiddleware',
                    'django.middleware.csrf.CsrfViewMiddleware',
                    'django.contrib.auth.middleware.AuthenticationMiddleware',
                    'django.contrib.messages.middleware.MessageMiddleware',
                    # Uncomment the next line for simple clickjacking protection:
                    # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
                )
    
                ROOT_URLCONF = 'triplanner.urls'
    
                # Python dotted path to the WSGI application used by Django's runserver.
                WSGI_APPLICATION = 'triplanner.wsgi.application'
    
                TEMPLATE_DIRS = (
                    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
                    # Always use forward slashes, even on Windows.
                    # Don't forget to use absolute paths, not relative paths.
                )
    
                INSTALLED_APPS = (
                    'django.contrib.auth',
                    'django.contrib.contenttypes',
                    'django.contrib.sessions',
                    'django.contrib.sites',
                    'django.contrib.messages',
                    'django.contrib.staticfiles',
                    'registration',
                    # Uncomment the next line to enable the admin:
                    # 'django.contrib.admin',
                    # Uncomment the next line to enable admin documentation:
                    # 'django.contrib.admindocs',
                )
    
                ####### Begin Of Arguments specific to django-registration application ############
                ACCOUNT_ACTIVATION_DAYS = 7
                EMAIL_HOST = 'localhost'
                DEFAULT_FROM_EMAIL = 'akash@localhost.com'
                LOGIN_REDIRECT_URL = '/'
                ####### End Of Arguments specific to django-registration application ############
    
                ####### Begin Of Arguments specific to Invitation application ############
                ACCOUNT_ACTIVATION_DAYS = 7
                ACCOUNT_INVITATION_DAYS = 7
                INVITATIONS_PER_USER = 3
                INVITE_MODE = True
                ####### End Of Arguments specific to Invitation application ############
                # A sample logging configuration. The only tangible logging
                # performed by this configuration is to send an email to
                # the site admins on every HTTP 500 error when DEBUG=False.
                # See http://docs.djangoproject.com/en/dev/topics/logging for
                # more details on how to customize your logging configuration.
                LOGGING = {
                    'version': 1,
                    'disable_existing_loggers': False,
                    'filters': {
                        'require_debug_false': {
                            '()': 'django.utils.log.RequireDebugFalse'
                        }
                    },
                    'handlers': {
                        'mail_admins': {
                            'level': 'ERROR',
                            'filters': ['require_debug_false'],
                            'class': 'django.utils.log.AdminEmailHandler'
                        }
                    },
                    'loggers': {
                        'django.request': {
                            'handlers': ['mail_admins'],
                            'level': 'ERROR',
                            'propagate': True,
                        },
                    }
                }
    


Answer: Basically should work. Try setting `DATABASE_URL` in a file called `.env`
which you place next to your `Procfile`. Foreman will find it and use it when
running your processes. The syntax is simply `DATABASE_URL=...`, without any
quotes, and without the word "set", etc.

