Ошибка сервера (500) развертывание Django на heroku

Я включил отладку в значение False в моем файле settings.py (обратите внимание, что до того, как я превратил его в false, все работало отлично), и когда я запустил git push heroku master и перешел на свой веб-сайт, домашняя страница работала, но это не так для все мои страницы: на некоторых я получаю сообщение об ошибке Server Error (500)

Вот мой settings.py код:

DEBUG = False
ALLOWED_HOSTS = ["hacka-labs.herokuapp.com"]

Я заметил, что URL-адреса, по которым я передаю идентификатор, не работают

Пожалуйста, помогите мне, если знаете ответ


person Fantasmo Clone27    schedule 22.07.2018    source источник
comment
возможно, некоторым страницам нужны статические файлы или вы хотите читать данные из db, и у вас нет разрешения на доступ к ним   -  person Mohammad Ali    schedule 22.07.2018
comment
Думаю, проблема не в этом, потому что все работало отлично, пока я не переключил DEBUG на False.   -  person Fantasmo Clone27    schedule 22.07.2018
comment
вы определили статический маршрут в файле urls.py?   -  person Mohammad Ali    schedule 22.07.2018
comment
Нет. Я действительно должен?   -  person Fantasmo Clone27    schedule 22.07.2018


Ответы (3)


У меня была аналогичная проблема, и трудно понять, когда для DEBUG установлено значение False. Когда я переконфигурировал его обратно на DEBUG = True, все снова работало нормально. Итак, проблема была

Обычно вы не видите эту ошибку при разработке, потому что когда DEBUG = True, ManifestStaticFilesStorage переключается на нехешированные URL-адреса. https://stackoverflow.com/a/51060143/7986808

Решение проблемы в вашем случае может отличаться от моего. Но вы можете найти проблему, изменив метод ведения журнала вашего проекта Django, чтобы вы могли видеть больше информации в командной строке при запуске heroku logs -t -a <heroku-app> даже в режиме DEBUG = False.

Измените настройки ведения журнала django в settings.py следующим образом:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {
            'format': ('%(asctime)s [%(process)d] [%(levelname)s] '
                       'pathname=%(pathname)s lineno=%(lineno)s '
                       'funcname=%(funcName)s %(message)s'),
            'datefmt': '%Y-%m-%d %H:%M:%S'
        },
        'simple': {
            'format': '%(levelname)s %(message)s'
        }
    },
    'handlers': {
        'null': {
            'level': 'DEBUG',
            'class': 'logging.NullHandler',
        },
        'console': {
            'level': 'INFO',
            'class': 'logging.StreamHandler',
            'formatter': 'verbose'
        }
    },
    'loggers': {
        'django': {
            'handlers': ['console'],
            'level': 'DEBUG',
            'propagate': True,
        },
        'django.request': {
            'handlers': ['console'],
            'level': 'DEBUG',
            'propagate': False,
        },
    }
}

Затем запустите heroku logs -t -a <heroku-app> и откройте URL-адрес, по которому вы ранее получали ошибку 500, вы обнаружите проблему в журналах. Надеюсь, что это поможет вам.


Если отсутствуют какие-то статические файлы, просто переключите свой статический корень в settings.py, как показано ниже STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles'). Запуск heroku run python manage.py collectstatic -a <heroku-app> создает каталог статических файлов.

person khashashin    schedule 05.06.2019
comment
Также необходимо добавить django_heroku.settings(config=locals(), staticfiles=False,logging=False) logging = False - person Ravi; 11.05.2020

У меня была такая же ошибка.

Я решил проблему, удалив import django heroku в settings.py

person piyushnbali    schedule 19.08.2020
comment
import django_heroku django_heroku.settings(locals()) Ссылка: pypi.org/project/django-heroku - person Riyas Ac; 19.08.2020

У меня была такая же ошибка при развертывании проекта response и django на heroku. Я занимался отладкой в ​​течение 2 дней, делал все, например, разрешенный хост, статические файлы, json, белый шум, но это все еще не решало проблему.

Если ваш браузер выдает ошибку 500, установите DEBUG=True в settings.py. Если он выдает ошибку TemplateDoesNotExist в index.html, то изменение views.py может помочь решить эту проблему. Не забудьте установитьDEBUG=False перед развертыванием.

Я решил это, изменив код в views.py.

def index(request):

return render(request,'ur_app_name.html')  

TO

def index(request):

some_variable_name=TemplateResponse(request,'ur_app_name.html',{})

return some_variable_name

Не забудьте импортировать это поверх views.py

from django.template.response import TemplateResponse

Я не знаю, с какой именно проблемой я столкнулся, я предполагаю, что это проблема httpResponse, потому что серверу нужен HTTP-запрос, а нашему локальному компьютеру он не нужен.

Некоторые ключевые моменты этой ошибки:

  1. Убедитесь, что вы упомянули свое доменное имя в ALLOWED_HOST в settings.py файле
  2. установите STATIC_ROOT=os.path.join(BASE_DIR, 'staticfiles') in settings.py, это может понадобиться, когда heroku выдает ошибку collecticstatic, но я не уверен. Если он по-прежнему вызывает ту же ошибку, отключите collectstatic=1 по команде (точную команду для этого можно найти в журнале отладки), что не создает никаких проблем.
  3. установите whitenoise.middleware.WhiteNoiseMiddleware в MIDDLEWARE в settings.py, это может помочь.
  4. Если в вашем проекте используются react и django, выберите python только при добавлении пакета сборки на heroku. Не выбирайте node.js.

Это репозиторий github, куда я загружаю свой проект heroku, здесь вы можете найти файлы конфигурации, которые могут быть полезны.

Если в вашем проекте используется реакция, а предложения django и выше не помогли, это может помочь:

  • проверьте .gitignore файлов, установите все requirement.txt файлы и скопируйте package.json файл в корневой каталог.

установить "build": "cd <project folder name>&& react-scripts build", в скриптах package.json

Мои index.html и manifest.json находятся в репозитории github, упомянутом выше. Каталог staticfiles был создан в корневой папке с помощью $ python manage.py collectstatic. Попробуйте скопировать мой index.html файл, если в вашем проекте его нет. Это все.

Ссылка на herokuapp: https://sainterface.herokuapp.com/

person Ashish Adhikari    schedule 12.05.2021