DEBUG = Falseに設定すると、500エラーが発生します


298

を変更するとDEBUG = False、私のサイトは500を生成し(wsgiとmanage.py runserverを使用)、Apacheエラーログにエラー情報がなく、に変更すると正常に実行さdebugTrueます。

私はDjango 1.5とPython 2.7.3を使用しています。ここにApacheアクセスログがあり、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"

これが私の設定ファイルです:

import os.path    
DEBUG = False 
#TEMPLATE_DEBUG = DEBUG

HERE = os.path.dirname(__file__)
ADMINS = (
    ('admin', 'xyzadmin@qq.com'),
)

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

はい、テンプレートdirに403&404 500 htmlファイルを追加しました
zhiguo.wang

500.htmlと404.htmlと403.htmlファイルが配置されていますか?テンプレートディレクトリのルートにこれらのファイルがなかったデプロイ済みプロジェクトに問題があったことを思い出しました。
エッセ2013

サイトが500エラーを生成している場合、Apacheログに情報が含まれているはずです。エラーログファイルの最後のチャンクを貼り付けて、他の人に見てもらいたい場合があります。
esse 2013

87
SECRET_KEYを公開しているため、今すぐ変更することができます...
Fraxtil

1
これはすべての人の答えではありません。以下のstackoverflow.com/a/372​​18484/4028977に示すように、これが発生している理由はさまざまです。いくつかの単純なロギングを使用すると、当て推量なしで見つけることができます。
Rob

回答:


413

Django 1.5では、セキュリティ上の理由から必要な許可ホスト設定が導入されました。Django 1.5で作成された設定ファイルには、追加する必要がある次の新しいセクションがあります。

# 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 = []

ホストをここに追加する['www.beta800.net']['*']、簡単なテストを行いますが['*']、本番環境では使用しないでください


32
うわー-これは私たちを一生懸命噛み締めます。この設定がドキュメントに埋め込まれているのは本当にうんざりです。本番サイトはDEBUG = Falseでは機能しません。これを指摘してくれてありがとう!!!
shreddd 2013年

4
この設定を導入したセキュリティ問題の詳細:実用的なHTTPホストヘッダー攻撃['*']本番環境では使用しないように説得します。
gertvdijk 2013年

4
bl。おそらく説明的なコメントが付いているため、settings.pyのデフォルト値として設定されてさえいないことに不満を感じています...
hwjp

7
ときどき、なぜDjangoがどんどん遅くなっているのかと思います!Surellyは私よりもはるかに優れたプログラマーですが、実際に適切な方法でサーバーを適切に構成するために、アプリケーションレベルで脆弱性を「修正」する決定を私は本当に理解していません。「テンプレートのキャッシュ」と「持続的な接続」についても同じことが言えます...深刻なWebサイトでは決して使用されない無用のコード。まだプログラミングの聖杯として提示されています!多分私だけかもしれませんが、以前は間違っていました!
StefanNch 2014年

3
気にしないで、問題を見つけた。django-pipelineスタティックがまだ収集されていない場合のの動作に関連していました。一般的なヒントとして、Djangoのhandle_uncaught_exceptionメソッドにブレークポイントを設定すると、ここで何が起こっているのかを理解するのに役立ちます。
Pieter

51

私はこれが遅いことを知っていますが、ここででエラー500を検索してDEBUG=Falseしまいました。私の場合、それはであることが判明しましたが、ホストの設定ALLOWED_HOSTSに使用os.environ.get('variable')していたので、ロギングを有効にするまで気付きませんでした。すべてのエラーを以下のファイルに記録すると、次の場合でも記録されます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',
        },
    }
}

16
これは受け入れられる答えになるはずです。推測するのではなく、プロダクション設定を使用した後でフレームワーク自体に何が問題なのかを単純に質問する方がはるかに便利です。
Stefan Dragnev 2016年

4
確かに、これは暗闇の中で歩き回るものではありません。このメソッドを使用して通常表示されるエラーメッセージを確認してください。私の場合、settings.pyにアプリが探していた別の設定がありませんでした。これを追跡するためのログだけが必要でした。1つの重要な注意:ドキュメントの例に示されているように、「mysite.log」の前に/ path / to / my / django /を追加しました:docs.djangoproject.com/en/1.10/topics/logging/#examples
Rob

4
解決策を探すのに何時間も費やしてきましたが、無駄です。この回答によると、ログを使用するだけで問題が発生するはずです。これが最良の回答です。OPありがとう!
2017年

サーバーエラーでログが生成されないようです。さまざまなロギング設定を試してみましたが、役に立ちませんでした。何か案は?
cammil

5
ありがとうございました!これは私のエラーを解決しました。パッケージから静的アセットを収集するには、collectstaticを実行する必要があることがわかりました。
themessup

33

最近、Django 2.0で同じ問題が発生しました。設定することで問題を解決できましたDEBUG_PROPAGATE_EXCEPTIONS = True。こちらをご覧くださいhttps : //docs.djangoproject.com/en/2.0/ref/settings/#debug-propagate-exceptions

私の場合、エラーはでしたValueError: Missing staticfiles manifest entry for 'admin/css/base.css'。ローカルで実行して修正しましたpython manage.py collectstatic


私は同じことをしますが、collectstaticはそれを修正しませんでした。「到達できないエラー」が表示されましたか?その場合、どのように修正しましたか?
Kavi Vaidya、2018年

23

私の場合、サードパーティアプリのドキュメントを読んだことで、適切に救われました。

犯人?django_compressor

持っていた

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

DEBUG = True 常に500をくれました。修正するには、設定を実行するための行が必要でした

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

それが私にとってうまくいかなかった理由でしたが、その行はdjango_compressorがその仕事をすることを無効にしないのではないですか?
ファンクシュ

1
@Fanckushいいえ。害はありません。django-compressor.readthedocs.io/en/latest/settings/…Compressorは引き続き完全に機能します。すべての静特性(CSSなど)を圧縮するだけで、アセットが既に圧縮されているため、設定は役に立たない
KhoPhi

13

そうです、Django 1.5では、DEBUG = Falseの場合、ALLOWED_HOSTSを構成し、ポート番号なしでドメインを追加します。例:

ALLOWED_HOSTS = ['localhost']

なんらかの理由で、「localhost」を使用してもうまくいきませんでした。代わりにIP '127.0.0.1'を使用する必要がありました。私はまた、あなたがおかしくてそれを動かしたいだけなら、「*」を使うこともできました。ただし、本番環境でそれを行うことはお勧めしません。Django 1.4.20を実行しているOSX
BlakePetersen

11

また、至る所でURLをチェックする必要があります。DEBUGがに設定されている場合、の場合とは異なり、False末尾のないすべてのURL /はバグとして扱われDEBUG = Trueます/。つまり、簡単に言えば、すべてのリンクがすべての場所でスラッシュで終わるようにしてください。


3
リバースタグとurlタグを使用するだけで問題ありません
maazza

設定はDEBUG=False、同様インポートエラーを公開することができますstackoverflow.com/questions/25676453/...
ecoe

jsおよびcssアセットへのリンクさえありますか?
amchugh89 2015年

@ amchugh89:いいえ、「django」URLのみ
webzy 2015年

1
私の問題は、ホワイトノイズが画像を見つけられず、ValueErrorをスローしていたことです。私もそれを見つけることができませんでしたが、ホワイトノイズにそれを探さないように伝える方法がわかりませんでした。ホワイトノイズをオフにして、django static serveを使用すると、prodでdebug = Falseを実行できます。明らかに理想的ではない:(
amchugh89 2015年

7

私はみんなに陽気な話があります。このページに到達した後、私は「エウレカ!私は救われた。それは私の問題でなければならない」と言った。だから私ALLOWED_HOSTSはsetting.pyに必要なリストを挿入しました...何もありません。同じ古い500エラー。いいえ、それは404.htmlファイルがないためではありませんでした。

だから私は2日間、静的なファイルの提供と関係があるなどの野生の理論に身を投じました(私はnoobであり、noobは何をしているのかわからないことを理解してください)。

それで、それは何でしたか?役立つヒントを紹介するのは、モデレーターさんです。私の開発Djangoはバージョン1.5.somethingですが、本番サーバーのバージョンは1.5.something + 1 ...または多分プラス2です。そして、私ALLOWED_HOSTSがデスクトップバージョンのsettings.pyに追加した後、hwjpが要求したものを欠いていました-「settings.pyのデフォルト値、おそらく説明コメント付き」---私は本番サーバーで同じことをしましたそれのための適切なドメイン。

しかし、新しいバージョンのDjangoを使用している本番サーバーでは、説明のコメント付きのsettings.pyにデフォルト値があったことに気付きませんでした。モニターから見えないところに、私がエントリーした場所のかなり下にありました。そしてもちろん、リストは空でした。したがって、私の時間の無駄です。


1
私はまったく同じ陽気なパターンを持っていました!ただし、これを見つけて初めて陽気になりましたが、おかげで。その前は、それだけでイライラしていた
binithb 2013

これらすべてに役立つのはlocal_settings.py、それぞれの環境でaを使用し、それをにインポートすることですsettings.py
nicorellius 2013

1
私がやりたいことは、settings.pyの代わりにsettings / ディレクトリを持っていることです。このディレクトリには、さまざまな環境用の個別の.pyファイルと、一般的な設定用のbase.pyがあります。プロダクションに依存する設定は、ベース設定から*をインポートすることから始め、オーバーライドする必要があるものをオーバーライドするだけです。また、settings /ディレクトリを有効なモジュールに変換するために必要なinit .pyは、最初にbase.pyからインポートしてから、local.py(ローカルにのみ存在する)からインポートしようとすることができます。つまり、ローカル設定を手動で指定する必要がないということです
mephisto

7

主な回答
の補足settings.py開発と本番を切り替えるときにALLOWED_HOSTSおよびDEBUGグローバル定数を変更するのは面倒です。私はこのコードを使用してこれらの設定を自動的に設定しています:

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",]
    ...

macOSを使用している場合は、より一般的なコードを記述できます。

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

6

それだけの価値がある-私はDEBUG = Falseいくつかのページのみで500を取得していました。例外をpdbで追跡すると、欠落しているアセットが明らかになりました({% static ... %}テンプレートタグが500の原因だったと思います)。


1
これも私の問題でした。カスタム404ページが参照しているベーステンプレートで静的タグが使用されていましたが、上部に{%load static%}が含まれていませんでした。他のテンプレートにはこの行が含まれているため、他の場所では気づきませんでしたが、どこにでも静的ファイルを参照するため、ベースに配置することは理にかなっています。
krischan 2015年

2
ここで同じ解決策- static存在しないCSSファイルを含めるために使用していました。
Phil Gyford 2016

5

私がしたときに私は同じ問題に直面しました DEBUG = FALSE。上記の回答やその他の投稿に散在している統合ソリューションを次に示します。

デフォルトでは、settings.pyにがありALLOWED_HOSTS = []ます。ALLOWED_HOSTSエラーを取り除くために、シナリオに従って値に加えなければならない可能性のある変更を次に示します。

1:ドメイン名:

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

2:ドメイン名がまだない場合のデプロイ済みサーバーIP(これは私の場合で、魅力のように機能しました):

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

3:あなたは、ローカルサーバー上でテストしている場合、あなたは編集することができsettings.pyたりsettings_local.pyなどを:

ALLOWED_HOSTS = ['localhost', '127.0.0.1']

4:ALLOWED_HOSTS値に「*」を指定することもできますが、セキュリティ上の理由により、運用環境では推奨されません

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

詳細な解決策をブログに投稿しましたので、参考にしてください。


5

ALLOWED_HOSTSだけが問題ではないので、私は404.htmlを作成してテンプレートのベースレベル(アプリレベルではなく)に配置する必要がありました-また、404ビューを作成して404handler URLを追加することもできますが、オプション。404.html修正

mainproject.urls

handler404 = 'app.views.custom_404'

app.views

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

次に、templates / 404.htmlテンプレートを作成します

私はそれを見つけることができない別のS / O投稿からこれを得た

編集

また、ホワイトノイズのあるアセットを提供すると500エラーが発生します。私の人生の中で、エラーはホワイトノイズのValueErrorが私も見つけられなかったアセットを見つけることができなかったことを理解できませんでした、今のところデフォルトのdjangoサービスを使用する必要がありました


8
ホワイトノイズについても同じ問題がありました。python manage.py collectstatic修正しました。
Eugene Pakhomov 2016

1
@ amchungh89あなたは命の恩人です!それを指摘してくれてありがとう。
Deepak Sharma

5

私はこの問題についてさらに検索してテストしていましたが、settings.pyで指定された静的ファイルディレクトリが原因である可能性があることに気づきました。まず、このコマンドを実行する必要があります

python manage.py collectstatic

settings.pyでは、コードは次のようになります。

STATIC_URL = '/static/'

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

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

3

これは非常に古い質問であることはわかっていますが、他の誰かを助けることができるかもしれません。DEBUG = Falseを設定した後に500エラーが発生した場合は、コマンドラインでmanage.py runserverをいつでも実行して、Webエラーログに表示されないエラーを確認できます。


2

2019年半ばにDjangoで数年開発した後、私はこのエラーに直面しました。一晩中私を困惑させた!ホスト(400をスローする必要があります)は許可されませんでした。他のすべてがチェックアウトされ、最後にいくつかのエラーログが行われ、(collectstaticの後で)欠落しているまたは混乱した静的ファイルマニフェストがセットアップにねじ込まれていることがわかりました 長い話ですが、困惑していてWHITENOISEまたはDJANGO STATICFILEバックエンドとキャッシュ(マニフェストの静的ファイル)を使用している人にとって、これはおそらくあなたのためです。

  1. すべての設定を確認してください(ホワイトノイズバックエンドで行ったように...それでもdjangoバックエンドを読みます) http://whitenoise.evans.io/en/stable/django.html

  2. エラーコード500でも問題が解決しない場合は、settings.STATICFILES_STORAGEをメモしてください。

どちらかに設定します(圧縮を伴うホワイトノイズバックエンドの場合)

STATICFILES_STORAGE = 'whitenoise.storage.CompressedStaticFilesStorage'

または(djangoのデフォルトのままにする)

STATICFILES_STORAGE = django.contrib.staticfiles.storage.StaticFilesStorage

全体として、問題は、このホワイトノイズキャッシュ+圧縮バックエンド->

STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

またはdjango独自のキャッシュバックエンド->

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

...私のcssが他のいくつかのソースを参照していたため、collectstatic /バックエンドキャッシュ中に混同される可能性があるため、私にとってはうまく機能しませんでした。この問題は、http://whitenoise.evans.io/en/stable/django.html#storage-troubleshootでもハイライトされている可能性があります


1

私はそれがhttpサーバーの設定かもしれないと思う。鉱山はまだ壊れていて、ずっとALLOWED_HOSTSでした。ローカルでアクセスできます(私はgunicornを使用しています)が、DEBUG = Falseの場合はドメイン名経由ではアクセスできません。ドメイン名を使用しようとすると、エラーが発生するので、nginx関連の問題だと思います。

ここにnginxの私のconfファイルがあります:

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;
}

次のように私のgunicornの設定ファイルは以下のとおりです。#/ binに/ bashのCDのは/ var /ウェブ/ delicms_env / deli_cms /ソース../bin/activate EXEC gunicorn --workers = 3 deli_cms.wsgi:!アプリケーション
user2868304

私の問題はこれで解決しました。gunicorn_djangoスクリプトを使用していて、非推奨のメッセージが表示されていました。それがローカルで動作する理由はまだわかりませんが、nginxの設定を変更しませんでした。古いスクリプトを変更してgunicornを使用し、代わりにwsgi:applicationモジュールを使用すると、再び機能します。Gunicornはこの前にもいくつかの非推奨メッセージを投げていましたが、私の問題に固有のものは何もありませんでした。
user2868304 2013年


1

この問題に遭遇しました。テンプレートに含めていたことが判明し、staticテンプレートタグもう存在しないファイルをていたことがわかりました。ログを見ると問題がわかりました。

これは、この種のエラーの多くの考えられる理由の1つにすぎないと思います。

ストーリーのモラル:常にエラーをログに記録し、常にログをチェックします。


1

@squarebearのおかげで、ログファイルで次のエラーが見つかりました ValueError: The file 'myapp/styles.css' could not be found with <whitenoise.storage.CompressedManifestStaticFilesStorage ...>

私のdjangoアプリでいくつかの問題がありました。
STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'herokuのドキュメントから見つけた行を削除しました。

また、私は(のおかげで余分なディレクトリを追加しなければならなかった別のSOの答えstaticとしてのDjangoアプリケーションのルートにmyapp/static私はそれを使用していなかったにもかかわらず。次にpython manage.py collectstatic、サーバーを実行する前にコマンドを実行すると、問題が解決しました。最後に、それはうまく働き始めました。


これは元の質問にどのように答えますか?
Nick

1

500をdebug = Falseの形式で取得し始めました

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

引き上げ時にdjango.core.exceptions.ValidationErrorを代わりに引き上げrest_framework.serializers.ValidationErrorを

公平を期すために、以前はすでに500を発生させていましたが、ValidationErrorとしてdebug = Falseを使用して、これはNoReverseMatchに変更されました。


1

これは他の誰かを助けるかもしれません、私の場合、欠落しているファビコンの問題です。


0

これは古い質問であることはわかっていますが、DEBUG = Falseの場合にも500エラーが発生しました。数時間後、base.htmlのリンクの最後にスラッシュを付け忘れていることに気付きました。


CSSやJSのものでも?
amchugh89

0

これは古く、結局私の問題は問題に関連していますが、OPには関連していませんでしたが、私の解決策は上記を試した他の誰もが役に立たないためのものです。

修正版のDjangoには、デバッグがオフのときにのみ実行されるCSSおよびJSファイルを縮小する設定がありました。サーバーにCSS minifierがインストールされておらず、エラーが発生しました。Django-Mako-Plusを使用している場合、これが問題である可能性があります。


0

注意すべき小さなことの1つは、アレイにNoneが含まれている場合、その後に許可されるすべてのホストが無視されることです。

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

パーティーには少し遅れて、もちろん問題が多数発生する可能性がありますが、同様の問題があり、htmlのコメント内に{%%}の特殊文字が含まれていることがわかりました...

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

0

debug = falseで500エラーをスローしたが、debug = trueで機能するビューが1つありました。この種のものを取得していて、許可されたホストに問題がない場合は、間違った場所を指しているテンプレートの静的タグを更新して、ビューを修正しました。

したがって、使用されているすべてのテンプレートでリンクとタグが気密になっていることを確認することをお勧めします。デバッグではネットをすり抜けるが、本番環境ではエラーが発生する可能性があります。


0

DEBUG = Falseの場合、500エラーの別の原因が見つかりました。私は、Djangoの使用compressorユーティリティを、私たちのフロントエンドエンジニアは、フォントファイルへの参照を追加した内部compress css Djangoテンプレートでブロック。このような:

{% 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 %}

解決策は、リンクをttfファイルの下のendcompress行の下に移動することでした。


0

私はこれと同様の問題を抱えていました。誰かが同じことを経験している可能性があるため、私の解決方法を報告します。

私の場合、サーバーがホームページから静的ファイルを見つけられなかったため、エラーが発生しました。

したがって、エラーが発生するのは index別のページで発生ください。問題がインデックスでのみ発生している場合は、おそらく静的ファイルを確認する必要があります。Chromeプレビューコンソールを開き、エラーがないか確認することをお勧めします。

私の場合、サーバーはfavicon.icoと他の2つのCSSを見つけることができませんでした。

これを修正するために私は合格python manage.py collectstaticし、うまくいきました。


0

この投稿はかなり古いですが、今日でも完全に関連しています。

それは価値がある-私はDEBUG = False私のサイトのすべてのページで500を取得していました。

デバッグ中にトレースバックがありませんでした。

サイト内のテンプレートのすべての静的リンクをたどる必要があり、画像ソースの前に/(フォワードスラッシュ)を1つ見つけました。{%静的...%}。これにより500エラーDEBUG = Falseが発生しましたがDebug = True、エラーは発生せずに問題なく動作しました。とてもうるさい!警告してください!スラッシュのために多くの時間が無駄になっています...


0

あなたは実行したい場合がありますpython manage.py collectstaticあなたが設定した後DEBUG = FalseALLOWED_HOSTS = ['127.0.0.1']settings.py。これらの2つのステップの後、DEBUG = Falseモードを使用していても、私のWebアプリケーションはローカルサーバーで正常に実行されました。

ところで私はこれらの設定を持っていますsettings.py

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware', # what i added
    'django.middleware.common.CommonMiddleware', # and so on...
]

STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

ホワイトノイズ設定は、collectstaticコマンドと関係があるのではないかと思います。


-3

多すぎることを試した後、正しい解決策は...

あなたが設定する必要はありDEBUG = 'FALSE'ませんFalseFALSE、しかし、'FALSE'''


「FALSE」は文字列だと思うので、Trueに等しいので、エラーは発生しません。
apet
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.