I am trying to deploy a Python / Django app for a class project and been told I have to use Heroku, which I don't like at all!
Initially when I tried to push to heroku using the cli git push heroku main, i got an error saying 'No default language could be detected for this app.' So I added Python Buildpack within the Heroku dashboard. Now I get an error saying App not compatible with buildpack.
I've followed the Heroku django app config installing gunicorn and configured the setting.py here is my file structure and setting.py, can anyone advise why is not pushing to heroku?
"""Django settings for recipe_project project.Generated by 'django-admin startproject' using Django 5.0.1.For more information on this file, seehttps://docs.djangoproject.com/en/5.0/topics/settings/For the full list of settings and their values, seehttps://docs.djangoproject.com/en/5.0/ref/settings/"""from pathlib import Pathimport os# 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/5.0/howto/deployment/checklist/# SECURITY WARNING: keep the secret key used in production secret!SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY')# SECURITY WARNING: don't run with debug turned on in production!DEBUG = FalseALLOWED_HOSTS = ['*']# Application definitionINSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles', #recipe-related apps'users','recipes',]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 = 'recipe_project.urls'TEMPLATES = [ {'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [BASE_DIR / 'templates'],'APP_DIRS': True,'OPTIONS': {'context_processors': ['django.template.context_processors.debug','django.template.context_processors.request','django.template.context_processors.media','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages', ], }, },]WSGI_APPLICATION = 'recipe_project.wsgi.application'# Database# https://docs.djangoproject.com/en/5.0/ref/settings/#databasesDATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3','NAME': BASE_DIR / 'db.sqlite3', }}# Password validation# https://docs.djangoproject.com/en/5.0/ref/settings/#auth-password-validatorsAUTH_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/5.0/topics/i18n/LANGUAGE_CODE = 'en-us'TIME_ZONE = 'UTC'USE_I18N = TrueUSE_TZ = True#AUTHLOGIN_URL='/login/'# Static files (CSS, JavaScript, Images)# https://docs.djangoproject.com/en/5.0/howto/static-files/# STATIC_URL = 'static/'# STATICFILES_DIRS=[# BASE_DIR / 'static'# ]# MEDIA_URL = '/media/'# MEDIA_ROOT = BASE_DIR / 'media'BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')STATIC_URL = '/static/'# Extra places for collectstatic to find static files.STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static'),)# STATICFILES_STORAGE = MEDIA_URL = '/media/'MEDIA_ROOT = os.path.join(BASE_DIR, 'media')# Heroku: Update database configuration from $DATABASE_URL.import dj_database_urldb_from_env = dj_database_url.config(conn_max_age=500)DATABASES['default'].update(db_from_env)# Default primary key field type# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-fieldDEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'