为什么我的django应用无法在heroku上运行?

时间:2018-12-18 16:21:50

标签: python django python-3.x git heroku

我正在尝试部署我的heroku应用,但它一直显示以下错误。

remote:          File "/app/.heroku/python/lib/python3.7/site-packages/django/contrib/staticfiles/storage.py", line 43, in path
remote:            raise ImproperlyConfigured("You're using the staticfiles app "
remote:        django.core.exceptions.ImproperlyConfigured: You're using the staticfiles app without having set the STATIC_ROOT setting to a filesystem path.
remote:
remote:  !     Error while running '$ python manage.py collectstatic --noinput'.
remote:        See traceback above for details.
remote:
remote:        You may need to update application code to resolve this error.
remote:        Or, you can disable collectstatic for this application:
remote:
remote:           $ heroku config:set DISABLE_COLLECTSTATIC=1
remote:
remote:        https://devcenter.heroku.com/articles/django-assets
remote:  !     Push rejected, failed to compile Python app.
remote:
remote:  !     Push failed
remote: Verifying deploy...
remote:
remote: !       Push rejected to murmuring-shelf-23422.
 remote:

https://git.heroku.com/murmuring-shelf-23422.git      ! [远程拒绝]主机->主机(预接收挂钩被拒绝)      错误:无法将某些引用推送到“ https://git.heroku.com/murmuring-shelf-23422.git

我猜这是由于缺少静态根,但我已经将其指定为:-

    """
     Django settings for Diary project.

 Generated by 'django-admin startproject' using Django 2.1.3.

 For more information on this file, see
 https://docs.djangoproject.com/en/2.1/topics/settings/

 For the full list of settings and their values, see
 https://docs.djangoproject.com/en/2.1/ref/settings/
 """

 import os

 # Build paths inside the project like this:   os.path.join(BASE_DIR, ...)
 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

 import os

 SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY','qtw*=jdvr++ekim7j*(yn9c33)krewr!fndfsw+(fsdftr-jsewre' )


 # Quick-start development settings - unsuitable for production
 # See https://docs.djangoproject.com/en/2.1/howto/deployment/checklist/

 # SECURITY WARNING: keep the secret key used in production secret!


 # SECURITY WARNING: don't run with debug turned on in production!
 #DEBUG = False

 DEBUG = bool(os.environ.get('DJANGO_DEBUG', True))

 ALLOWED_HOSTS =   ['.herokuapp.com','192.168.43.187','192.168.43.86',
             '127.0.0.1',' 2001:0:9d38:90d7:1884:3321:3f57:fef6',
             '192.168.1.7',]


 # Application definition

 INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django_user_agents',
'CreateDiary',]

  MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
  'django.middleware.common.CommonMiddleware',
  'django.middleware.csrf.CsrfViewMiddleware',
   'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django_user_agents.middleware.UserAgentMiddleware',

]

  ROOT_URLCONF = 'Diary.urls'

TEMPLATES = [
{
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [],
    'APP_DIRS': True,
    'OPTIONS': {
        'context_processors': [
            'django.template.context_processors.debug',
            'django.template.context_processors.request',
            'django.contrib.auth.context_processors.auth',
            'django.contrib.messages.context_processors.messages',
        ],
    },
},

]

 WSGI_APPLICATION = 'Diary.wsgi.application'


 # Database
 # https://docs.djangoproject.com/en/2.1/ref/settings   /#databases

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.sqlite3',
    'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}

}

# Password validation
# https://docs.djangoproject.com/en/2.1/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [
{
    'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
    'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
    'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
    'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},

]

# Internationalization
# https://docs.djangoproject.com/en/2.1/topics/i18n/

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True

静态文件(CSS,JavaScript,图像)

https://docs.djangoproject.com/en/2.1/howto/static-files/

STATIC_URL = '/static/'
MEDIA_ROOT=os.path.join(BASE_DIR , 'media')
MEDIA_URL='/media/'

# Heroku: Update database configuration from    $DATABASE_URL.
import dj_database_url
 db_from_env = dj_database_url.config(conn_max_age=500)
DATABASES['default'].update(db_from_env)


# Simplified static file serving.
# https://warehouse.python.org/project/whitenoise/
STATICFILES_STORAGE =  'whitenoise.storage.CompressedManifestStaticFilesStorage'

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

 # The absolute path to the directory where collectstatic will collect static files for deployment.
 STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')

 # The URL to use when referring to static files (where they will be served from)
 STATIC_URL = '/static/'

0 个答案:

没有答案