skip to Main Content

I am trying to deploy my Django application on Heroku but although the logs show that the build is successful and despite successful deployment the application still shows an internal server error; and this is true with debug set to either true or false. Here are the files that I think are important( also I am using the cloudinary api for this project and I am not sure if that would be the problem; anyway I still decided to include my configuration of the same herein):

My Procfile:

    web gunicorn MkusdaRegister.wsgi --log-file -

My last build log

    -----> Building on the Heroku-22 stack
    -----> Using buildpack: heroku/python
    -----> Python app detected
    -----> Using Python version specified in runtime.txt
    !     
    !     A Python security update is available! Upgrade as soon as possible to: 
    python-3.10.8
    !     See: https://devcenter.heroku.com/articles/python-runtimes
    !     
    -----> No change in requirements detected, installing from cache
    -----> Using cached install of python-3.10.7
    -----> Installing pip 22.2.2, setuptools 63.4.3 and wheel 0.37.1
    -----> Installing SQLite3
    -----> Installing requirements with pip
    -----> $ python manage.py collectstatic --noinput
    185 static files copied to '/tmp/build_f409c0b9/static'.
    -----> Discovering process types
    Procfile declares types -> web
    -----> Compressing...
    Done: 44.4M
    -----> Launching...
    Released v16
    https://mkusda-events.herokuapp.com/ deployed to Heroku
    Starting November 28th, 2022, free Heroku Dynos, free Heroku Postgres, and free 
    Heroku Data for Redis® will no longer be available.
    If you have apps using any of these resources, you must upgrade to paid plans by 
    this date to ensure your apps continue to run and to retain your data. For 
    students, we will announce a new program by the end of September. Learn more at 
    https://blog.heroku.com/next-chapter

My settings.py file:

    import os
    from pathlib import Path
    import cloudinary
    import cloudinary.uploader
    import cloudinary.api

    # Build paths inside the project like this: BASE_DIR / 'subdir'.
    BASE_DIR = Path(__file__).resolve().parent.parent


    # Quick-start development settings - unsuitable for production
    # See https://docs.djangoproject.com/en/4.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 = True

    ALLOWED_HOSTS = ['my-app.herokuapp.com', '127.0.0.1']


    # Application definition

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'Accounts',
        'Events',
        'cloudinary'
    ]

   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',
    ]

    ROOT_URLCONF = 'MkusdaRegister.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 = 'MkusdaRegister.wsgi.application'


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

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




    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',
        },
     ]



    LANGUAGE_CODE = 'en-us'

    TIME_ZONE = 'UTC'

    USE_I18N = True

    USE_TZ = True



    STATIC_ROOT = os.path.join(BASE_DIR, 'static')
    STATIC_URL = 'static/'


    cloudinary.config(
       cloud_name= "myCloudName",
       api_key = "myKey",
       api_secret = "myAPIsecret",
       secure = True
    )


    AUTH_USER_MODEL = 'Accounts.User'


    DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'

My project/urls.py file:

    from django.contrib import admin
    from django.urls import path, include
    from django.conf import settings
    from django.conf.urls.static import static

    urlpatterns = [
        path('admin/', admin.site.urls),
        path('Accounts/', include('Accounts.urls')),
        path('Events/', include('Events.urls'))
    ]
    if settings.DEBUG:
        urlpatterns += static(settings.MEDIA_URL, document_root = 
    settings.MEDIA_ROOT)

If anyone needs to see anymore of my code then just let me know; I’d really use help on this one.

2

Answers


  1. Chosen as BEST ANSWER

    I finally figured out the issue, I had connected my heroku app to a github repository where one of my apps folder was missing some folder and files; so if by any chance you run into any problem of this kind in the future and your build is successful please try to check if you have any missing files and also remember to check your server logs, thankyou so much -Chris for suggesting that I check my logs. Happy Coding :)


  2. In urls.py file you have mentioned media root path but actually it’s not defined in your settings.py file.

    You can defined as mentioned below.

    Base url to serve media files
    MEDIA_URL = '/media/'
    # Path where media is stored
    MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search