Une fois que je change le DEBUG = False
, mon site va générer 500 ( en utilisant wsgi & manage.py runserver), et il n'y a pas d' information d'erreur dans le journal des erreurs Apache et il fonctionne normalement lorsque je change debug
de True
.
J'utilise Django 1.5 et Python 2.7.3 voici le journal d'accès Apache et sans aucun journal dans le journal des erreurs apache
www.beta800.net:80 222.247.56.11 - - [28/Feb/2013:13:42:28 +0800] "GET / HTTP/1.1" 500 257 "-" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22"
www.beta800.net:80 222.247.56.11 - - [28/Feb/2013:13:42:28 +0800] "GET /favicon.ico HTTP/1.1" 500 257 "-" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22"
www.beta800.net:80 222.247.56.11 - - [28/Feb/2013:13:42:28 +0800] "GET /favicon.ico HTTP/1.1" 500 257 "-" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22"
Voici mon fichier de paramètres:
import os.path
DEBUG = False
#TEMPLATE_DEBUG = DEBUG
HERE = os.path.dirname(__file__)
ADMINS = (
('admin', '[email protected]'),
)
MANAGERS = ADMINS
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'zdm', # Or path to database file if using sqlite3.
'USER': 'root', # Not used with sqlite3.
'PASSWORD': 'passwd', # 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.
}
}
# Local time zone for this installation. Choices can be found here:
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
# although not all choices may be available on all operating systems.
# In a Windows environment this must be set to your system time zone.
TIME_ZONE = 'America/Chicago'
# Language code for this installation. All choices can be found here:
# http://www.i18nguy.com/unicode/language-identifiers.html
LANGUAGE_CODE = 'en-us'
SITE_ID = 1
# If you set this to False, Django will make some optimizations so as not
# to load the internationalization machinery.
USE_I18N = True
# If you set this to False, Django will not format dates, numbers and
# calendars according to the current locale.
USE_L10N = True
# If you set this to False, Django will not use timezone-aware datetimes.
USE_TZ = True
# Absolute filesystem path to the directory that will hold user-uploaded files.
# Example: "/home/media/media.lawrence.com/media/"
MEDIA_ROOT = ''
# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash.
# Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
MEDIA_URL = ''
# Absolute path to the directory static files should be collected to.
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/home/media/media.lawrence.com/static/"
#STATIC_ROOT = os.path.join(HERE, 'static').replace('\\','/')
# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/static/'
#STATIC_ROOT = os.path.join(HERE, 'static').replace('\\','/')
S= os.path.join(HERE, 'static').replace('\\','/')
# Additional locations of static files
STATICFILES_DIRS = (
# Put strings here, like "/home/html/static" or "C:/www/django/static".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
'/home/zdm/static',
)
# List of finder classes that know how to find static files in
# various locations.
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
)
# Make this unique, and don't share it with anybody.
SECRET_KEY = '9a7!^gp8ojyk-^^d@*whuw!0rml+r+uaie4ur$(do9zz_6!hy0'
# List of callables that know how to import templates from various sources.
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 = 'zdm.urls'
# Python dotted path to the WSGI application used by Django's runserver.
WSGI_APPLICATION = 'zdm.wsgi.application'
TEMPLATE_DIRS = (
# Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
'/home/zdm/templates',
)
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',
'zdm',
'portal',
'admin',
'tagging',
)
django
settings
django-1.5
zhiguo.wang
la source
la source
Réponses:
Django 1.5 a introduit le paramètre d'hôtes autorisés requis pour des raisons de sécurité. Un fichier de paramètres créé avec Django 1.5 a cette nouvelle section que vous devez ajouter:
Ajoutez votre hôte ici comme
['www.beta800.net']
ou['*']
pour un test rapide, mais ne l'utilisez pas['*']
pour la production .la source
['*']
en production.django-pipeline
comportement de 'lorsque la statique n'a pas encore été collectée. Comme conseil général, placer un point d'arrêt dans lahandle_uncaught_exception
méthode de Django vous aidera à comprendre ce qui se passe ici.Je sais que c'est en retard mais je me suis retrouvé ici avec une recherche de mon erreur 500 avec
DEBUG=False
, dans mon cas, cela s'est avéré être leALLOWED_HOSTS
mais j'utilisaisos.environ.get('variable')
pour remplir les hôtes, je ne l'ai pas remarqué jusqu'à ce que j'active la journalisation, vous pouvez enregistrez toutes les erreurs dans le fichier ci-dessous et il se connectera même lorsqueDEBUG=False
:la source
J'ai rencontré le même problème récemment dans Django 2.0. J'ai pu comprendre le problème en définissant
DEBUG_PROPAGATE_EXCEPTIONS = True
. Voir ici: https://docs.djangoproject.com/en/2.0/ref/settings/#debug-propagate-exceptionsDans mon cas, l'erreur était
ValueError: Missing staticfiles manifest entry for 'admin/css/base.css'
. J'ai corrigé cela en exécutant localementpython manage.py collectstatic
.la source
Dans mon cas, la lecture de documents d'applications tierces m'a bien sauvé.
Le coupable? django_compressor
j'ai eu
DEBUG = True
m'a toujours donné 500. Pour le réparer, j'avais besoin d'une ligne dans mes paramètres pour le faire fonctionnerla source
À droite, dans Django 1.5 si DEBUG = False, configurez ALLOWED_HOSTS, en ajoutant des domaines sans le numéro de port. exemple:
la source
Vous devez également vérifier vos URL partout. Lorsque le
DEBUG
est défini surFalse
, toutes les URL sans suivi/
sont traitées comme un bogue, contrairement à ce que vous avezDEBUG = True
, auquel cas Django ajoutera/
partout où il manque. Donc, en bref, assurez-vous que tous les liens se terminent par une barre oblique PARTOUT.la source
DEBUG=False
peut également révéler des erreurs d'importation: stackoverflow.com/questions/25676453/…J'ai une histoire hilarante pour tous. Après avoir atteint cette page, j'ai dit "Eureka! Je suis sauvé. Cela DOIT être mon problème." J'ai donc inséré la
ALLOWED_HOSTS
liste requise dans setting.py et ... rien. Même vieille erreur 500. Et non, ce n'est pas faute de fichier 404.html.Donc, pendant 2 jours, je me suis occupé de théories sauvages, telles que cela avait quelque chose à voir avec le service de fichiers statiques (comprenez que je suis un noob et que les noobs ne savent pas ce qu'ils font).
Alors c'était quoi? C'est maintenant M. Modérateur que nous arrivons à un conseil utile. Alors que mon développement Django est la version 1.5.quelque chose, ma version de serveur de production est 1.5.quelque chose + 1 ... ou peut-être plus 2. Peu importe. Et donc après avoir ajouté le
ALLOWED_HOSTS
à la version de bureau de settings.py , qui manquait ce que hwjp demandait --- une "valeur par défaut dans settings.py, peut-être avec un commentaire explicatif" --- j'ai fait la même chose sur le serveur de production avec le domaine approprié pour cela.Mais je n'ai pas remarqué que sur le serveur de production avec la dernière version de Django, il y avait une valeur par défaut dans settings.py avec un commentaire explicatif. C'était bien en dessous de l'endroit où j'ai fait mon entrée, hors de vue sur le moniteur. Et bien sûr, la liste était vide. D'où ma perte de temps.
la source
local_settings.py
pour chaque environnement, puis de l'importer danssettings.py
.Compléter la réponse principale
Il est ennuyeux de changer les constantes globales ALLOWED_HOSTS et DEBUG
settings.py
lors du passage du développement à la production. J'utilise ce code pour définir ces paramètres automatiquement:Si vous utilisez macOS, vous pouvez écrire un code plus générique:
la source
Pour ce que ça vaut - j'obtenais un 500 avec
DEBUG = False
sur certaines pages seulement. Retracer l'exception avec pdb a révélé un atout manquant (je soupçonne que la{% static ... %}
balise de modèle était le coupable du 500.la source
static
pour inclure un fichier CSS qui n'existait pas.J'ai fait face au même problème quand je l'ai fait
DEBUG = FALSE
. Voici une solution consolidée comme dispersée dans les réponses ci-dessus et dans d'autres articles.Par défaut, dans settings.py nous avons
ALLOWED_HOSTS = []
. Voici les modifications possibles que vous devrez apporter enALLOWED_HOSTS
valeur selon le scénario pour vous débarrasser de l'erreur:1: Votre nom de domaine:
2: Votre IP de serveur déployée si vous n'avez pas encore de nom de domaine (ce qui était mon cas et fonctionnait comme un charme):
3: Si vous testez sur un serveur local, vous pouvez modifier votre
settings.py
ou ensettings_local.py
tant que:4: Vous pouvez également fournir «*» dans la
ALLOWED_HOSTS
valeur, mais ce n'est pas recommandé dans l'environnement de production pour des raisons de sécurité:J'ai également publié une solution détaillée sur mon blog que vous souhaiterez peut-être consulter.
la source
ALLOWED_HOSTS n'est PAS le seul problème, pour moi j'ai dû faire un 404.html et le mettre dans le niveau de base de mes modèles (pas au niveau de l'application) - En outre, vous pouvez faire une vue 404 et ajouter une URL 404handler mais je pense que c'est optionnel. 404.html l'a corrigé
dans mainproject.urls
dans app.views
puis créez un modèle / 404.html modèle
a obtenu cela d'un autre poste S / O que je ne peux pas le trouver
ÉDITER
aussi, j'obtiens 500 erreurs lorsque je sers des actifs avec du bruit blanc. Je ne pouvais pas comprendre cela pour la vie de moi, l'erreur était ValueError de whitenoise ne pouvant pas trouver un actif que je ne pouvais pas trouver non plus, a dû aller avec Django par défaut servant pour l'instant
la source
python manage.py collectstatic
l'a corrigé.Je cherchais et testais plus sur ce problème et je me suis rendu compte que les répertoires de fichiers statiques spécifiés dans settings.py peuvent être une cause de cela, donc d'abord, nous devons exécuter cette commande
dans settings.py, le code devrait ressembler à ceci:
la source
Je sais que c'est une très vieille question, mais je pourrais peut-être aider quelqu'un d'autre. Si vous rencontrez une erreur 500 après avoir défini DEBUG = False, vous pouvez toujours exécuter le serveur run.py manage.py dans la ligne de commande pour voir les erreurs qui n'apparaissent pas dans les journaux d'erreurs Web.
la source
C'est la mi-2019 et j'ai fait face à cette erreur après quelques années de développement avec Django. M'a dérouté pendant une nuit entière! Il n'était pas autorisé à héberger (ce qui devrait jeter un 400), tout le reste a été vérifié, a finalement fait une journalisation des erreurs uniquement pour découvrir que certains fichiers manquants / ou falsifiés manifestes (après collectstatic) étaient vissés avec la configuration. Pour faire court, pour ceux qui sont perplexes ET AINSI HAPPEN UTILISENT WHITENOISE OU LE BACK-END DJANGO STATICFILE AVEC CACHE (fichiers statiques manifestes), c'est peut-être pour vous.
Assurez-vous de tout configurer (comme je l'ai fait pour le backend whitenoise ... les backends django continuent de lire) http://whitenoise.evans.io/en/stable/django.html
Si le code d'erreur 500 vous abat toujours, notez vos paramètres.STATICFILES_STORAGE.
Réglez-le sur l'un ou l'autre (pour un backend à bruit blanc avec compression)
ou (laisser comme django par défaut)
Dans l'ensemble, LE PROBLÈME semblait provenir du fait que ce cache blanc + backend de compression ->
ou le propre backend de mise en cache du django ->
... n'a pas très bien fonctionné pour moi, car mon CSS faisait référence à d'autres sources qui peuvent être mélangées lors de la mise en cache collectstatic / backend. Ce problème est également potentiellement mis en évidence dans http://whitenoise.evans.io/en/stable/django.html#storage-troubleshoot
la source
Je pense que cela pourrait également être les paramètres du serveur http. Le mien est toujours cassé et avait ALLOWED_HOSTS tout le temps. Je peux y accéder localement (j'utilise gunicorn), mais pas via le nom de domaine lorsque DEBUG = False. lorsque j'essaie d'utiliser le nom de domaine, il me donne alors l'erreur, ce qui me fait penser que c'est un problème lié à nginx.
Voici mon fichier de conf pour nginx:
la source
J'ai le même problème, dans mon cas, il a été causé par un script Commenté à l'intérieur de la balise body.
la source
J'ai rencontré ce problème. Il s'avère que j'incluais dans le modèle, en utilisant la
static
balise de modèle, un fichier qui n'existait plus. Un regard dans les journaux m'a montré le problème.Je suppose que ce n'est qu'une des nombreuses raisons possibles de ce type d'erreur.
Morale de l'histoire: enregistrez toujours les erreurs et vérifiez toujours les journaux.
la source
Merci à @squarebear, dans le fichier journal, j'ai trouvé l'erreur:
ValueError: The file 'myapp/styles.css' could not be found with <whitenoise.storage.CompressedManifestStaticFilesStorage ...>
.J'ai eu quelques problèmes avec mon application Django. J'ai supprimé la ligne
STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
que j'ai trouvée dans la documentation du heroku.J'ai également dû ajouter un répertoire supplémentaire (grâce à une autre réponse SO )
static
à la racine de l'application django commemyapp/static
si je ne l'utilisais pas. Ensuite, l'exécution de la commandepython manage.py collectstatic
avant d'exécuter le serveur a résolu le problème. Enfin, cela a commencé à bien fonctionner.la source
J'ai commencé à obtenir le 500 pour debug = False sous la forme de
lors de l'augmentation de django.core.exceptions.ValidationError au lieu de l'augmentation de rest_framework.serializers.ValidationError
Pour être honnête, il levait déjà un 500 auparavant, mais en tant que ValidationError, avec debug = False, cela a changé en NoReverseMatch.
la source
cela peut peut-être aider quelqu'un d'autre, dans mon cas, le problème avec le favicon manquant.
la source
Je sais que c'est une vieille question, mais j'obtenais également une erreur 500 lorsque DEBUG = False. Après plusieurs heures, j'ai réalisé que j'avais oublié de terminer certains des liens dans mon base.html avec une barre oblique.
la source
C'est vieux et mon problème a fini par être lié au problème mais pas pour l'OP mais ma solution est pour quiconque a essayé ce qui précède en vain.
J'avais un paramètre dans une version modifiée de Django pour réduire les fichiers CSS et JS qui ne fonctionnaient que lorsque DEBUG était désactivé. Mon serveur n'avait pas le minifieur CSS installé et a jeté l'erreur. Si vous utilisez Django-Mako-Plus, cela peut être votre problème.
la source
Une petite chose à noter, si le tableau ne contient aucun, tous les hôtes autorisés suivants sont ignorés.
Django version 1.8.4
la source
Un peu tard pour la fête, et bien sûr, il pourrait y avoir une légion de problèmes mais j'ai eu un problème similaire et il s'est avéré que j'avais {%%} des caractères spéciaux dans ma remarque html ...
la source
J'ai eu une vue qui a jeté une erreur 500 dans debug = false mais a fonctionné dans debug = true. Pour tous ceux qui obtiennent ce genre de chose et les hôtes autorisés ne sont pas le problème, j'ai corrigé ma vue en mettant à jour la balise statique d'un modèle qui pointait vers le mauvais emplacement.
Je suggérerais donc simplement de vérifier que les liens et les balises sont hermétiques dans tous les modèles utilisés, peut-être que certaines choses passent à travers le net lors du débogage mais donnent des erreurs de production.
la source
J'ai trouvé une autre cause de l'erreur 500 lorsque DEBUG = False. J'utilise l'
compressor
utilitaire Django et notre ingénieur frontal a ajouté des références aux fichiers de polices à l' intérieur d' uncompress css
bloc dans un modèle Django. Comme ça:La solution était de déplacer le lien vers le
ttf
fichier sous laendcompress
ligne.la source
J'ai eu un problème similaire à celui-ci et je vais vous expliquer comment j'ai résolu le mien car il se pourrait que quelqu'un éprouve également la même chose.
Dans mon cas, l'erreur est due au fait que le serveur n'a pas trouvé de fichiers statiques sur la page d'accueil.
Assurez-vous donc que l'erreur se produit uniquement dans le
index
ou se produit sur une autre page. Si le problème se produit uniquement dans l'index, vous devez probablement vérifier les fichiers statiques. Je recommande d'ouvrir la console de prévisualisation Chrome et de rechercher d'éventuelles erreurs.Dans mon cas, le serveur n'a pas pu trouver
favicon.ico
et deux autres CSS.Pour résoudre ce problème, je suis passé
python manage.py collectstatic
et cela a fonctionné.la source
Je sais que ce post est assez ancien mais il est toujours parfaitement pertinent aujourd'hui.
Pour ce que ça vaut - j'obtenais un 500 avec
DEBUG = False
pour toutes les pages de mon site.Je n'ai eu aucune trace en débogage.
J'ai dû parcourir tous les liens statiques de mes modèles au sein de mon site et en trouver un / (barre oblique) devant ma source d'image. {% statique ...%}. Cela a provoqué l'erreur 500
DEBUG = False
mais a parfaitement fonctionnéDebug = True
sans erreur. Très ennuyant! Être averti! Beaucoup d'heures perdues à cause d'une barre oblique ...la source
Vous voudrez peut-être exécuter
python manage.py collectstatic
après avoir définiDEBUG = False
etALLOWED_HOSTS = ['127.0.0.1']
entrésettings.py
. Après ces deux étapes, mon application Web a bien fonctionné sur mon serveur local, même avec DEBUG = False mode.BTW J'ai ces paramètres
settings.py
.Je suppose que le réglage du bruit peut avoir quelque chose à voir avec la commande collectstatic.
la source
Ok après avoir essayé tellement de choses, la bonne solution est ...
vous devez définir
DEBUG = 'FALSE'
nonFalse
ouFALSE
, mais'FALSE'
avec''
la source