it-swarm.com.de

Das Setzen von DEBUG = False verursacht 500 Fehler

Wenn ich DEBUG = False ändere, generiert meine Site 500 (mithilfe von wsgi & manage.py runserver), und im Apache-Fehlerprotokoll werden keine Fehlerinformationen angezeigt. Wenn ich debug in True ändere, wird sie normal ausgeführt.

Ich verwende Django 1.5 & Python 2.7.3 Es gibt ein Apache-Zugriffsprotokoll und kein Protokoll im Apache-Fehlerprotokoll

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"

Hier ist meine Einstellungsdatei:

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-^^[email protected]*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',
)
275
zhiguo.wang

Django 1.5 führte die aus Sicherheitsgründen erforderliche Einstellung für erlaubte Hosts ein. Eine mit Django 1.5 erstellte Einstellungsdatei enthält diesen neuen Abschnitt, den Sie hinzufügen müssen:

# Hosts/domain names that are valid for this site; required if DEBUG is False
# See https://docs.djangoproject.com/en/1.9/ref/settings/#allowed-hosts
ALLOWED_HOSTS = []

Fügen Sie Ihren Host hier wie ['www.beta800.net'] oder ['*'] für einen schnellen Test hinzu, , verwenden Sie jedoch nicht ['*'] für die Produktion .

404
Ric

Ich weiß, dass dies zu spät ist, aber ich bin mit einer Suche nach meinem Fehler 500 mit DEBUG=False hier gelandet. In meinem Fall stellte sich heraus, dass dies der ALLOWED_HOSTS war, aber ich verwendete os.environ.get('variable'), um die Hosts aufzufüllen. Ich bemerkte dies nicht, bis ich die Protokollierung aktivierte können Sie alle Fehler in der Datei mit dem folgenden Protokoll protokollieren, und es wird auch dann protokolliert, wenn DEBUG=False:

# settings.py
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {
            'format' : "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",
            'datefmt' : "%d/%b/%Y %H:%M:%S"
        },
        'simple': {
            'format': '%(levelname)s %(message)s'
        },
    },
    'handlers': {
        'file': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': 'mysite.log',
            'formatter': 'verbose'
        },
    },
    'loggers': {
        'Django': {
            'handlers':['file'],
            'propagate': True,
            'level':'DEBUG',
        },
        'MYAPP': {
            'handlers': ['file'],
            'level': 'DEBUG',
        },
    }
}
33
0x7c0

In meinem Fall rettete mich das Lesen von Dokumenten von Drittanbieter-Apps richtig. 

Der schuldige? Django_kompressor

Ich hatte 

{% load compress %}
{% compress css %}
 ... css files linked here ..
{% endcompress %}

DEBUG = True gab mir immer 500. Um das Problem zu beheben, brauchte ich eine Zeile in meinen Einstellungen, um es auszuführen

COMPRESS_ENABLED = os.environ.get('COMPRESS_ENABLED', False)
21
Rexford

Richtig, in Django 1.5, wenn DEBUG = False, konfigurieren Sie ALLOWED_HOSTS und fügen Domänen ohne die Portnummer hinzu. Beispiel: 

ALLOWED_HOSTS = ['localhost']
13
tonyprr

Ich bin vor kurzem in Django 2.0 auf das gleiche Problem gestoßen. Ich konnte das Problem durch Einstellen von DEBUG_PROPAGATE_EXCEPTIONS = True herausfinden. Siehe hier: https://docs.djangoproject.com/de/2.0/ref/settings/#debug-propagate-exceptions

In meinem Fall war der Fehler ValueError: Missing staticfiles manifest entry for 'admin/css/base.css'. Ich habe das behoben, indem ich python manage.py collectstatic lokal ausführte.

11
Kyle Gibson

Sie müssen Ihre URLs auch überall überprüfen. Wenn DEBUG auf False gesetzt ist, werden alle URLs ohne nachgestellten / als Fehler behandelt, anders als bei DEBUG = True. In diesem Fall fügt Django / überall hinzu, wo er fehlt. Kurz gesagt, stellen Sie sicher, dass alle Links mit einem Schrägstrich ÜBERALL enden.

10
webzy

Ich habe eine lustige Geschichte für alle. Nachdem ich diese Seite erreicht hatte, sagte ich "Eureka! Ich bin gerettet. Das MUSS mein Problem sein." Also habe ich die erforderliche ALLOWED_HOSTS-Liste in setting.py eingefügt und ... nichts. Gleicher alter 500 Fehler. Und nein, es fehlte nicht an einer 404.html-Datei.

Also beschäftigte ich mich zwei Tage lang mit wilden Theorien, zum Beispiel, dass es etwas mit statischen Dateien zu tun hatte (verstehen Sie, dass ich ein Noob bin und Noobs nicht wissen, was sie tun).

Was war es also? Nun, Herr Moderator, kommen wir zu einem nützlichen Tipp. Während mein Entwicklungs-Django die Version 1.5 ist, ist meine Produktionsserverversion 1.5. Etwas + 1 ... oder vielleicht plus 2. Was auch immer. Und nachdem ich ALLOWED_HOSTS zur Desktop-Version von settings.py hinzugefügt hatte, fehlte das, was hwjp angefordert hatte - einen "Standardwert in settings.py, möglicherweise mit einem erläuternden Kommentar" --- Ich tat das Gleiche auf dem Produktionsserver mit der richtigen Domäne dafür.

Ich habe jedoch nicht bemerkt, dass auf dem Produktionsserver mit der späteren Version von Django ein Standardwert in settings.py mit einem erläuternden Kommentar vorhanden war. Es war weit unten, wo ich eintrat, außer Sicht auf dem Monitor. Und natürlich war die Liste leer. Daher meine Zeitverschwendung.

7
Mike O'Connor

Für das, was es wert ist - ich habe nur auf einigen Seiten eine 500 mit DEBUG = False bekommen. Die Rückverfolgung der Ausnahme mit pdb ergab ein fehlendes Asset (ich vermute, dass das {% static ... %}-Template-Tag der Täter der 500 war.

6
user316054

Ergänzung der Hauptantwort
Es ist ärgerlich, die globalen Konstanten ALLOWED_HOSTS und DEBUG in settings.py zu ändern, wenn zwischen Entwicklung und Produktion gewechselt wird .. Ich benutze diesen Code, um diese Einstellungen automatisch festzulegen:

import socket

if socket.gethostname() == "server_name":
    DEBUG = False
    ALLOWED_HOSTS = [".your_domain_name.com",]
    ...
else:
    DEBUG = True
    ALLOWED_HOSTS = ["localhost", "127.0.0.1",]
    ...

Wenn Sie macOS verwenden, können Sie einen allgemeineren Code schreiben:

if socket.gethostname().endswith(".local"): # True in your local computer
    DEBUG = True
    ALLOWED_HOSTS = ["localhost", "127.0.0.1",]
else:
    ...
5
ePi272314

Ich hatte das gleiche Problem, als ich DEBUG = FALSE tat. Hier ist eine konsolidierte Lösung, wie sie in den obigen und anderen Beiträgen verstreut ist.

In settings.py haben wir standardmäßig ALLOWED_HOSTS = []. Hier sind mögliche Änderungen, die Sie je nach Szenario im ALLOWED_HOSTS-Wert vornehmen müssen, um den Fehler zu beseitigen:

1: Ihr Domainname:

ALLOWED_HOSTS = ['www.example.com'] # Your domain name here

2: Ihre bereitgestellte Server-IP, wenn Sie noch keinen Domänennamen haben (was bei mir der Fall war und wie ein Zauber funktionierte):

ALLOWED_HOSTS = ['123.123.198.123'] # Enter your IP here

3: Wenn Sie auf einem lokalen Server testen, können Sie Ihren settings.py oder settings_local.py wie folgt bearbeiten:

ALLOWED_HOSTS = ['localhost', '127.0.0.1']

4: Sie können auch "*" im ALLOWED_HOSTS-Wert angeben, jedoch wird aus Sicherheitsgründen in der Produktionsumgebung nicht empfohlen: 

ALLOWED_HOSTS = ['*'] # Not recommended in production environment

Ich habe auch eine ausführliche Lösung in meinem blog veröffentlicht, auf die Sie sich beziehen können.

5

ALLOWED_HOSTS ist NICHT das einzige Problem, für mich musste ich eine 404.html erstellen und in die Basisebene meiner Vorlagen (nicht App-Ebene) einfügen. Außerdem können Sie eine 404-Ansicht erstellen und eine 404-Handler-URL hinzufügen wahlweise. 404.html hat es behoben

in mainproject.urls

handler404 = 'app.views.custom_404'

in app.views

def custom_404(request):
    return render(request, '404.html', {}, status=404)

dann machen Sie eine template/404.html Vorlage

habe dies von einem anderen S/O-Beitrag erhalten, dass ich es nicht finden kann

EDIT

ich erhalte auch 500 Fehler, wenn ich Assets mit Whitenoise bediene. Ich konnte nicht herausfinden, dass ValueError von Whitenoise nicht in der Lage war, einen Vermögenswert zu finden, den ich auch nicht finden konnte

4
amchugh89

Ich habe mehr über dieses Problem gesucht und getestet, und mir wurde klar, dass die in settings.py angegebenen statischen Dateiverzeichnisse eine Ursache dafür sein können. Daher müssen wir diesen Befehl ausführen

python manage.py collecstatic

in settings.py sollte der Code ungefähr so ​​aussehen:

STATIC_URL = '/static/'

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)

STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
3
Edison Urquijo

Ich weiß, dass dies eine sehr alte Frage ist, aber vielleicht könnte ich jemand anderem helfen. Wenn Sie nach dem Festlegen von DEBUG = False einen Fehler von 500 haben, können Sie den manage.py-Runserver immer in der Befehlszeile ausführen, um Fehler anzuzeigen, die nicht in den Webfehlerprotokollen angezeigt werden.

2
n0grip

Dank @squarebear habe ich in der Protokolldatei den Fehler gefunden: ValueError: The file 'myapp/styles.css' could not be found with <whitenoise.storage.CompressedManifestStaticFilesStorage ...>

Ich hatte einige Probleme mit meiner Django-App. Ich habe die Leitung entfernt
STATICFILES_STORAGE = 'whitenoise.Django.GzipManifestStaticFilesStorage' den ich aus der Dokumentation des Heroku gefunden habe. 

Ich musste auch ein zusätzliches Verzeichnis hinzufügen (dank einer anderen SO answer ) static im Stammverzeichnis der Django-Anwendung als myapp/static, obwohl ich es nicht verwendet habe. Wenn Sie den Befehl python manage.py collectstatic ausführen, bevor Sie den Server ausführen, wurde das Problem behoben. Schließlich hat es gut funktioniert.

1
kHarshit

Ich denke es könnten auch die http-Server-Einstellungen sein. Meins ist immer noch kaputt und hatte die ganze Zeit ALLOWED_HOSTS. Ich kann lokal darauf zugreifen (ich verwende gunicorn), aber nicht über den Domänennamen, wenn DEBUG = False ist. Wenn ich versuche, den Domainnamen zu verwenden, wird mir der Fehler angezeigt, und ich denke, es ist ein Nginx-Problem.

Hier ist meine Conf-Datei für Nginx:

server {
    listen   80;
    server_name localhost myproject.ca www.myproject.ca;
    root /var/web/myproject/deli_cms;

    # serve directly - analogous for static/staticfiles
    location /media/ {
        # if asset versioning is used
        if ($query_string) {
            expires max;
        }
    }
    location /admin/media/ {
        # this changes depending on your python version
        root /var/web/myproject/lib/python2.6/site-packages/Django/contrib;
    }
    location /static/ {
    alias /var/web/myproject/deli_cms/static_root/;
    }

    location / {
        proxy_pass_header Server;
        proxy_set_header Host $http_Host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_connect_timeout 10;
        proxy_read_timeout 10;
        proxy_pass http://localhost:8000/;
    }
    # what to serve if upstream is not available or crashes
    error_page 500 502 503 504 /media/50x.html;
}
1
user2868304

Ich bin auf dieses Problem gestoßen. Es stellte sich heraus, dass ich in die Vorlage mit dem Template-Tag static eine Datei eingefügt hatte, die nicht mehr vorhanden war. Ein Blick in die Protokolle zeigte mir das Problem.

Ich denke, das ist nur einer von vielen möglichen Gründen für diese Art von Fehler. 

Moral der Geschichte: Fehler immer protokollieren und immer Protokolle prüfen.

1
niagr

Ich fing an, die 500 für debug = False in Form von zu bekommen

Django.urls.exceptions.NoReverseMatch: Reverse for 'home' not found.
or...
Django.urls.exceptions.NoReverseMatch: Reverse for 'about' not found.

beim Erhöhen Django.core.exceptions.ValidationError anstelle von rest_framework.serializers.ValidationError

Um fair zu sein, es wurde bereits eine 500 erhöht, aber als ValidationError mit debug = False wurde dies in NoReverseMatch geändert.

1
DZet

Ich habe ein ähnliches Problem, in meinem Fall wurde es durch ein kommentiertes Skript im body-Tag verursacht. 

<!--<script>  </script>-->
1
Edison Urquijo

Eine kleine Bemerkung: Wenn das Array None enthält, werden alle nachfolgenden erlaubten Hosts ignoriert.

ALLOWED_HOSTS = [
    "localhost",
    None,
    'example.com', # First DNS alias (set up in the app)
    #'www.example.com', # Second DNS alias (set up in the app)
]

Django version 1.8.4

0
Ayush Goel

Ich hatte ein ähnliches Problem und ich werde berichten, wie ich mein Problem gelöst habe, weil es sein kann, dass auch jemand dasselbe erlebt.

In meinem Fall wurde der Fehler dadurch verursacht, dass der Server einige statische Dateien von der Homepage nicht fand.

Stellen Sie daher sicher, dass der Fehler nur in index oder auf einer anderen Seite auftritt. Wenn das Problem nur im Index auftritt, müssen Sie höchstwahrscheinlich die statischen Dateien überprüfen. Ich empfehle, die Vorschau-Konsole Chrome zu öffnen und nach Fehlern zu suchen.

In meinem Fall wurde der Server favicon.ico und zwei andere CSS nicht gefunden.

Indem ich das korrigierte, gab ich einen python manage.py collecstatic und korrigierte das Problem.

0
Alison Andrade

Ich habe noch eine weitere Ursache für den 500-Fehler gefunden, wenn DEBUG = False. Ich verwende das Django-Dienstprogramm compressor und unser Front-End-Ingenieur fügte Verweise auf Zeichensatzdateien inside a compress css-Block in einer Django-Vorlage hinzu. So was:

{% compress css %}
    <link href="{% static "css/bootstrap.css" %}" rel="stylesheet">
    <link href="{% static "css/bootstrap-spinedit.css" %}" rel="stylesheet">
    <link href="{% static "djangular/css/styles.css" %}" rel="stylesheet">
    <link href="{% static "fonts/fontawesome-webfont.ttf" %}" rel="stylesheet">
{% endcompress %}

Die Lösung bestand darin, den Link in die Datei ttf unterhalb der Zeile endcompress zu verschieben.

0
nmgeek

Ein bisschen zu spät zur Party, und natürlich könnte es viele Probleme geben, aber ich hatte ein ähnliches Problem und es stellte sich heraus, dass ich {%%} Sonderzeichen in meiner HTML-Bemerkung hatte ...

<!-- <img src="{% static "my_app/myexample.jpg" %}" alt="My image"/> -->
0

Ich weiß, dass dies eine alte Frage ist, aber ich habe auch einen Fehler 500 erhalten, wenn DEBUG = False. Nach einigen Stunden bemerkte ich, dass ich vergessen hatte, einige Links in meiner base.html mit einem nachgestellten Schrägstrich zu beenden. 

0
SethB

Ich hatte eine Ansicht, die einen 500-Fehler in Debug = False ausgab, aber in Debug = True arbeitete. Für alle, die diese Art von Dingen erhalten, und Allowed Hosts ist nicht das Problem. Ich korrigierte meine Ansicht, indem das statische Tag einer Vorlage aktualisiert wurde, das auf den falschen Speicherort zeigte. 

Ich würde also vorschlagen, dass Links und Tags in allen verwendeten Vorlagen luftdicht geprüft werden. Möglicherweise rutschen bestimmte Dinge beim Debugging durch das Netz, geben jedoch Fehler in der Produktion.

0
Tom

Es war Mitte 2019, und ich war mit diesem Fehler konfrontiert, nachdem ich mich ein paar Jahre mit Django entwickelt hatte. Verblüffte mich für eine ganze Nacht! Es war nicht erlaubt, dass Host (der eine 400 werfen sollte), alles andere auscheckte, und schließlich eine Fehlerprotokollierung durchführte, um herauszufinden, dass einige fehlende oder durcheinandergebrachte statische Dateien (nach collectstatic) mit dem Setup zu tun hatten. Lange Rede kurzer Sinn, für diejenigen, die ratlos sind UND SO PASSIEREN, WHITENOISE OR DAS Django STATICFILE-BACKEND MIT CACHE (Manifest Static Files) verwenden, ist dies vielleicht etwas für Sie.

  1. Stellen Sie sicher, dass Sie alles eingerichtet haben (wie ich es auch für das Backend für Whitenoise getan habe ... Django-Backends lesen Sie trotzdem weiter) http://whitenoise.evans.io/en/stable/Django.html

  2. Wenn der Fehlercode 500 Sie immer noch erschießt, notieren Sie sich Ihre Einstellungen. STATICFILES_STORAGE.

Stellen Sie es auf entweder (für Weiß-Backend mit Komprimierung)

STATICFILES_STORAGE = 'whitenoise.storage.CompressedStaticFilesStorage'

oder (als Django Standardeinstellung lassen)

STATICFILES_STORAGE = Django.contrib.staticfiles.storage.StaticFilesStorage

Alles in allem schien DAS PROBLEM von der Tatsache zu herrühren, dass dieser Whitenoise-Cache + Komprimierungs-Backend ->

STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

oder das Django-eigene Caching-Backend ->

STATICFILES_STORAGE = 'Django.contrib.staticfiles.storage.ManifestStaticFilesStorage'

... hat für mich nicht ganz gut funktioniert, da mein CSS auf einige andere Quellen verweist, die beim Caching von Collectstatic/Backend verwechselt werden könnten. Dieses Problem wird möglicherweise auch in http://whitenoise.evans.io/en/stable/Django.html#storage-troubleshoot hervorgehoben.

0
aaronlhe

Dies ist alt und mein Problem endete damit, dass es mit dem Problem zusammenhängt, aber nicht für das OP, aber meine Lösung ist für alle anderen, die dies ohne Erfolg versucht haben. 

Ich hatte eine Einstellung in einer modifizierten Version von Django, um CSS- und JS-Dateien zu minimieren, die nur ausgeführt wurden, wenn DEBUG deaktiviert war. Mein Server hatte den CSS-Minifier nicht installiert und warf den Fehler. Wenn Sie Django-Mako-Plus verwenden, könnte dies Ihr Problem sein.

0
Spartacus