title: Django static files on heroku
body: <p>I deployed a django app to heroku, using "git push heroku master" which worked absolutely fine.</p>
  
  <p>I then created a second app on the same git using "heroku create second-app -r staging'</p>
  
  <p>and pushed using: git push staging master</p>
  
  <p>when I open second-app, none of the static files are picked up or loaded (ie no css, js, or images work)</p>
  
  <p>This is extremely confusing - please help!</p>
  
  <p>my settings file is below</p>
  
  <pre><code>import os
  import platform
  import dj_database_url
  
  DEBUG = True
  TEMPLATE_DEBUG = DEBUG
  
  # This should work for any deployment
  BASE_DIR = os.path.abspath(os.path.join(os.path.dirname( __file__ ), '..'))
  
  ADMINS = (
      ('me', 'me@gmailcom'),
  )
  
  MANAGERS = ADMINS
  # LOCAL SETTINGS
  if platform.system() in ['Windows', 'Darwin']:
      #EV = 'LOCAL'
      DATABASES = {
               'default': {
                   'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
                   'NAME': BASE_DIR + '//db//db.sqlite3',
                   'USER': '',                      # Not used with sqlite3.
                   'PASSWORD': '',                  # Not used with sqlite3.
                   'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
                   'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
               }
      }
      # Hosts/domain names that are valid for this site; required if DEBUG is False
      # See https://docs.djangoproject.com/en/1.4/ref/settings/#allowed-hosts
      ALLOWED_HOSTS = []
  
      CACHES = {
      'default': {
          'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
          'LOCATION': 'unique-snowflake',
          'TIMEOUT': 86400,
          'OPTIONS': {
              'MAX_ENTRIES': 10000
              },
          }
      }
  
  # HEROKU SETTINGS
  else:
      #EV = 'HEROKU'
      # DEBUG = False
      DATABASES = {}
      DATABASES['default'] =  dj_database_url.config()
  
      # Honor the 'X-Forwarded-Proto' header for request.is_secure()
      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.4/ref/settings/#allowed-hosts
      # Allow all host headers
      ALLOWED_HOSTS = ['*']
  
      # Todo: ammar - update to Memcached
      CACHES = {
      'default': {
          'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
          'LOCATION': 'unique-snowflake',
          'TIMEOUT': 86400,
          'OPTIONS': {'MAX_ENTRIES': 10000},
          }
      }
  
  TIME_ZONE = 'Europe/London'
  
  LANGUAGE_CODE = 'en-gb'
  
  SITE_ID = 1
  
  USE_I18N = True
  
  USE_L10N = True
  
  USE_TZ = False
  
  MEDIA_ROOT = ''
  
  MEDIA_URL = '/media/'
  
  STATIC_ROOT = ''
  
  STATIC_URL = '/static/'
  
  
  STATICFILES_DIRS = ()
  
  STATICFILES_FINDERS = (
      'django.contrib.staticfiles.finders.FileSystemFinder',
      'django.contrib.staticfiles.finders.AppDirectoriesFinder',
  )
  
  
  SECRET_KEY = '***'
  
  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 = 'sm.urls'
  
  # Python dotted path to the WSGI application used by Django's runserver.
  WSGI_APPLICATION = 'sm.wsgi.application'
  
  TEMPLATE_DIRS = (
      os.path.join(BASE_DIR, 'mytemplates')
  )
  
  INSTALLED_APPS = (
      'django.contrib.auth',
      'django.contrib.contenttypes',
      'django.contrib.sessions',
      'django.contrib.sites',
      'django.contrib.messages',
      'django.contrib.staticfiles',
      # Uncomment the next line to enable the admin:
      'django.contrib.admin',
      # Uncomment the next line to enable admin documentation:
      'django.contrib.admindocs',
      'smcore',
      'south',
      'django.contrib.humanize',
  )
  
  
  
  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,
          },
      }
  }
  
  LOGIN_URL = '/login/'
  LOGIN_REDIRECT_URL = '/getStarted/'
  LOGOUT_URL = '/do_logout/'
  
  # e-mail server
  EMAIL_HOST_USER = '***@gmail.com'
  EMAIL_HOST= 'smtp.gmail.com'
  # EMAIL_PORT = 465
  EMAIL_USE_TLS = True
  EMAIL_HOST_PASSWORD = '***'
  DEFAULT_FROM_EMAIL = '***@gmail.com'
  SERVER_EMAIL = '***@gmail.com'
  </code></pre>
  
  <p>Update</p>
  
  <p>I took a copy of the code and redeployed, which worked with the following updates to the settings:</p>
  
  <pre><code>STATIC_ROOT = 'staticfiles'
  
  STATIC_URL = '/static/'
  
  STATICFILES_DIRS = (
      (os.path.join(BASE_DIR,'smcore','static')),
  )
  
  
  STATICFILES_FINDERS = (
  
      #'django.contrib.staticfiles.finders.FileSystemFinder',
      #'django.contrib.staticfiles.finders.AppDirectoriesFinder',
      #'django.contrib.staticfiles.finders.DefaultStorageFinder',
  )
  </code></pre>
  
  <p>I then branched my code (so I have master and staging) and synced new heroku remote into my staging branch. I then did a git push staging staging:master and it did a full upload; which has once again got me back to the same place... help!!!</p>