Setelah saya mengubah DEBUG = False
, situs saya akan menghasilkan 500 (menggunakan wsgi & manage.py runserver), dan tidak ada info kesalahan di log kesalahan Apache dan itu akan berjalan secara normal ketika saya mengubah debug
ke True
.
Saya menggunakan Django 1.5 & Python 2.7.3 di sini adalah log akses Apache dan tanpa log in log apache error
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"
Ini file pengaturan saya:
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
sumber
sumber
Jawaban:
Django 1.5 memperkenalkan pengaturan host yang diizinkan yang diperlukan untuk alasan keamanan. File pengaturan yang dibuat dengan Django 1.5 memiliki bagian baru ini yang perlu Anda tambahkan:
Tambahkan host Anda di sini seperti
['www.beta800.net']
atau['*']
untuk tes cepat, tetapi jangan gunakan['*']
untuk produksi .sumber
['*']
dalam produksi.django-pipeline
perilaku ketika statis belum dikumpulkan. Sebagai tip umum, menempatkan breakpoint dalamhandle_uncaught_exception
metode Django akan membantu Anda mengetahui apa yang terjadi di sini.Saya tahu ini sudah terlambat tapi saya berakhir di sini dengan mencari kesalahan saya 500 dengan
DEBUG=False
, dalam kasus saya itu ternyata menjadiALLOWED_HOSTS
tetapi saya gunakanos.environ.get('variable')
untuk mengisi host, saya tidak melihat ini sampai saya mengaktifkan logging, Anda dapat log semua kesalahan ke file dengan di bawah ini dan itu akan masuk bahkan ketikaDEBUG=False
:sumber
Saya mengalami masalah yang sama baru-baru ini di Django 2.0. Saya dapat memecahkan masalah dengan menetapkan
DEBUG_PROPAGATE_EXCEPTIONS = True
. Lihat di sini: https://docs.djangoproject.com/en/2.0/ref/settings/#debug-propagate-exceptionsDalam kasus saya, kesalahannya adalah
ValueError: Missing staticfiles manifest entry for 'admin/css/base.css'
. Saya memperbaikinya dengan menjalankan secara lokalpython manage.py collectstatic
.sumber
Dalam kasus saya, membaca dokumen aplikasi pihak ketiga dengan benar menyelamatkan saya.
Pelakunya? django_compressor
Saya punya
DEBUG = True
selalu memberi saya 500. Untuk memperbaikinya, saya membutuhkan garis di pengaturan saya untuk membuatnya berjalansumber
Benar, dalam Django 1.5 jika DEBUG = Salah, konfigurasikan ALLOWED_HOSTS, tambahkan domain tanpa nomor port. contoh:
sumber
Anda juga harus memeriksa URL Anda di semua tempat. Ketika
DEBUG
diset keFalse
, semua URL tanpa trailing/
diperlakukan sebagai bug, tidak seperti yang Anda milikiDEBUG = True
, dalam hal ini Django akan menambahkan di/
mana pun ia hilang. Jadi, singkatnya, pastikan semua tautan berakhir dengan garis miring di MANA SAJA.sumber
DEBUG=False
dapat mengungkap kesalahan impor juga: stackoverflow.com/questions/25676453/…Saya punya cerita lucu untuk semua. Setelah mencapai halaman ini saya berkata, "Eureka! Saya diselamatkan. Itu HARUS menjadi masalah saya." Jadi saya memasukkan
ALLOWED_HOSTS
daftar yang diperlukan di setting.py dan ... tidak ada. Kesalahan 500 lama yang sama. Dan tidak, itu bukan karena kurangnya file 404.html.Jadi selama 2 hari saya menyibukkan diri dengan teori-teori liar, seperti itu ada hubungannya dengan melayani file statis (mengerti bahwa saya seorang noob dan noobs tidak tahu apa yang mereka lakukan).
Jadi apa itu? Sekarang Tuan Moderator yang memberikan tip berguna. Sedangkan pengembangan saya Django adalah versi 1.5.something, versi server produksi saya adalah 1.5.something + 1 ... atau mungkin ditambah 2. Apapun. Dan setelah saya menambahkan
ALLOWED_HOSTS
ke versi desktop dari settings.py , yang tidak memiliki apa yang diminta hwjp --- "nilai default di settings.py, mungkin dengan komentar penjelasan" --- Saya melakukan hal yang sama pada server produksi dengan domain yang tepat untuk itu.Tetapi saya gagal memperhatikan bahwa pada server produksi dengan versi Django yang lebih baru ada nilai default di settings.py dengan komentar penjelasan. Itu jauh di bawah tempat saya membuat entri saya, tidak terlihat di monitor. Dan tentu saja daftarnya kosong. Karena itu buang-buang waktu saja.
sumber
local_settings.py
untuk setiap lingkungan dan kemudian mengimpornyasettings.py
.Melengkapi jawaban utama
Sangatlah menjengkelkan untuk mengubah ALLOWED_HOSTS dan DEBUG konstanta global
settings.py
ketika beralih antara pengembangan dan produksi. Saya menggunakan kode ini untuk mengatur pengaturan ini secara otomatis:Jika Anda menggunakan macOS Anda bisa menulis kode yang lebih umum:
sumber
Untuk apa nilainya - saya mendapatkan 500 dengan hanya
DEBUG = False
pada beberapa halaman. Menelusuri kembali pengecualian dengan pdb mengungkapkan aset yang hilang (saya menduga{% static ... %}
tag templat adalah biang keladinya bagi 500).sumber
static
untuk memasukkan file CSS yang tidak ada.Saya menghadapi masalah yang sama ketika saya melakukannya
DEBUG = FALSE
. Berikut adalah solusi terkonsolidasi yang tersebar dalam jawaban di atas dan tulisan lainnya.Secara default, di settings.py kita miliki
ALLOWED_HOSTS = []
. Berikut ini beberapa kemungkinan perubahan yang harus AndaALLOWED_HOSTS
nilai sesuai skenario untuk menghilangkan kesalahan:1: Nama domain Anda:
2: IP server yang digunakan jika Anda belum memiliki nama domain (yang merupakan kasus saya dan berfungsi dengan sangat baik):
3: Jika Anda menguji pada server lokal, Anda dapat mengedit
settings.py
atausettings_local.py
sebagai:4: Anda juga dapat memberikan '*' dalam
ALLOWED_HOSTS
nilai tetapi tidak direkomendasikan dalam lingkungan produksi karena alasan keamanan:Saya juga memposting solusi terperinci di blog saya yang mungkin ingin Anda referensikan.
sumber
ALLOWED_HOSTS BUKAN satu-satunya masalah, bagi saya saya harus membuat 404.html dan meletakkannya di level dasar templat saya (bukan level aplikasi) - Juga, Anda dapat membuat tampilan 404 dan menambahkan url 404 handler tapi saya pikir itu pilihan. 404.html memperbaikinya
di mainproject.urls
di app.views
lalu buat templat / 404.html templat
mendapat ini dari S / O post lain yang saya tidak dapat menemukannya
EDIT
juga, saya mendapatkan 500 kesalahan ketika saya melayani aset dengan whitenoise. Tidak dapat mengetahuinya selama hidup saya, kesalahan adalah ValueError dari whitenoise karena tidak dapat menemukan aset yang juga tidak dapat saya temukan, harus menggunakan default django serve untuk saat ini
sumber
python manage.py collectstatic
memperbaikinya.Saya sedang mencari dan menguji lebih lanjut tentang masalah ini dan saya menyadari bahwa direktori file statis ditentukan dalam settings.py dapat menjadi penyebabnya, jadi pertama, kita perlu menjalankan perintah ini
di settings.py, kode akan terlihat seperti ini:
sumber
Saya tahu bahwa ini adalah pertanyaan yang sangat lama, tapi mungkin saya bisa membantu orang lain. Jika Anda memiliki 500 kesalahan setelah pengaturan DEBUG = Salah, Anda selalu dapat menjalankan runserver manage.py di baris perintah untuk melihat kesalahan yang tidak akan muncul di log kesalahan web apa pun.
sumber
Pertengahan 2019 dan saya menghadapi kesalahan ini setelah beberapa tahun berkembang bersama Django. Membuatku bingung sepanjang malam! Itu tidak diperbolehkan host (yang harus membuang 400), semuanya diperiksa, akhirnya melakukan kesalahan logging hanya untuk menemukan bahwa beberapa file statis yang hilang / rusak (setelah kumpulkan) statis sedang mengacaukan setup. Singkat cerita, bagi mereka yang bingung DAN BEGITU TERJADI MENGGUNAKAN WHITENOISE ATAU STATISTIK DJANGO KEMBALI DENGAN CACHE (manifest statis file), mungkin ini untuk Anda.
Pastikan Anda mengatur semuanya (seperti yang saya lakukan untuk backend whitenoise ... backend Django baca terus) http://whitenoise.evans.io/en/stable/django.html
Jika kode kesalahan 500 masih menembak Anda, catat pengaturan Anda.STATICFILES_STORAGE.
Setel ke salah (untuk memutihkan backend dengan kompresi)
atau (biarkan sebagai django default)
Semua dalam semua, MASALAH tampaknya berasal dari fakta bahwa cache backenoise + kompresi backend ini ->
atau backend caching django itu sendiri ->
... tidak bekerja dengan baik untuk saya, karena css saya merujuk beberapa sumber lain yang mungkin tercampur selama caching collatic / backend. Masalah ini juga berpotensi disorot di http://whitenoise.evans.io/en/stable/django.html#storage-troubleshoot
sumber
Saya pikir itu juga bisa menjadi pengaturan server http. Milik saya masih rusak dan telah ALLOWED_HOSTS sepanjang waktu. Saya dapat mengaksesnya secara lokal (saya menggunakan gunicorn), tetapi tidak melalui nama domain ketika DEBUG = Salah. ketika saya mencoba menggunakan nama domain itu kemudian memberi saya kesalahan, jadi membuat saya berpikir itu masalah terkait nginx.
Ini file conf saya untuk nginx:
sumber
Saya memiliki masalah serupa, dalam kasus saya itu disebabkan oleh memiliki skrip Komentar di dalam tag tubuh.
sumber
Saya mengalami masalah ini. Ternyata saya termasuk dalam template, menggunakan
static
tag template, file yang sudah tidak ada lagi. Melihat log menunjukkan masalah pada saya.Saya kira ini hanyalah salah satu dari banyak kemungkinan alasan untuk jenis kesalahan ini.
Moral cerita: selalu mencatat kesalahan dan selalu memeriksa catatan.
sumber
Berkat @squarebear, dalam file log, saya menemukan kesalahan:
ValueError: The file 'myapp/styles.css' could not be found with <whitenoise.storage.CompressedManifestStaticFilesStorage ...>
.Saya punya beberapa masalah di aplikasi Django saya. Saya menghapus baris
STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
yang saya temukan dari dokumentasi heroku.Saya juga harus menambahkan direktori tambahan (berkat jawaban SO yang lain )
static
di root aplikasi Djangomyapp/static
walaupun saya tidak menggunakannya. Kemudian menjalankan perintahpython manage.py collectstatic
sebelum menjalankan server memecahkan masalah. Akhirnya, mulai bekerja dengan baik.sumber
Saya mulai mendapatkan 500 untuk debug = Salah dalam bentuk
saat menaikkan django.core.exceptions.ValidationError alih-alih menaikkan rest_framework.serializers.ValidationError
Agar adil, itu sudah menaikkan 500 sebelumnya, tetapi sebagai ValidationError, dengan debug = False, ini berubah menjadi NoReverseMatch.
sumber
ini mungkin membantu orang lain, dalam kasus saya masalah dengan favicon yang hilang.
sumber
Saya tahu ini adalah pertanyaan lama, tetapi saya juga mendapatkan 500 kesalahan ketika DEBUG = Salah. Setelah beberapa jam, saya menyadari bahwa saya lupa mengakhiri beberapa tautan di base.html saya dengan garis miring.
sumber
Ini sudah tua dan masalah saya akhirnya terkait dengan masalah tetapi tidak untuk OP tetapi solusi saya adalah untuk orang lain yang mencoba di atas tetapi tidak berhasil.
Saya memiliki pengaturan dalam versi modifikasi Django untuk memperkecil CSS dan file JS yang hanya berjalan ketika DEBUG dimatikan. Server saya tidak menginstal pengukur CSS dan melemparkan kesalahan. Jika Anda menggunakan Django-Mako-Plus, ini mungkin masalah Anda.
sumber
Satu hal kecil yang perlu diperhatikan, Jika array tidak ada di dalamnya, maka semua host yang diizinkan berikutnya diabaikan.
Django version 1.8.4
sumber
Agak terlambat ke pesta, dan tentu saja mungkin ada banyak masalah tapi saya punya masalah yang sama dan ternyata saya memiliki {%%} karakter khusus di dalam komentar html saya ...
sumber
Saya punya satu pandangan yang melemparkan 500 kesalahan dalam debug = false tetapi bekerja di debug = true. Bagi siapa saja yang mendapatkan hal semacam ini dan Host yang Diizinkan bukan masalah, saya memperbaiki pandangan saya dengan memperbarui tag statis templat yang menunjuk ke lokasi yang salah.
Jadi saya sarankan hanya memeriksa tautan dan tag kedap udara di setiap templat yang digunakan, mungkin hal-hal tertentu melewati jaring dalam debug tetapi memberikan kesalahan dalam produksi.
sumber
Saya menemukan penyebab lain dari kesalahan 500 ketika DEBUG = Salah. Saya menggunakan
compressor
utilitas Django dan insinyur front-end kami menambahkan referensi ke file font di dalamcompress css
blok di template Django. Seperti ini:Solusinya adalah dengan memindahkan tautan ke
ttf
file di bawahendcompress
baris.sumber
Saya memiliki masalah yang mirip dengan ini dan saya akan melaporkan bagaimana saya menyelesaikan masalah saya karena bisa jadi seseorang juga mengalami hal yang sama.
Dalam kasus saya, kesalahan itu disebabkan karena server tidak menemukan beberapa file statis dari beranda.
Jadi pastikan kesalahan hanya terjadi pada
index
atau terjadi pada halaman lain. Jika masalah hanya terjadi dalam indeks sangat mungkin Anda perlu memeriksa file statis. Saya sarankan membuka konsol pratinjau Chrome dan memeriksa adanya kesalahan.Dalam kasus saya, server tidak dapat menemukan
favicon.ico
dan dua CSS lainnya.Untuk memperbaiki ini saya lulus
python manage.py collectstatic
dan berhasil.sumber
Saya tahu posting ini cukup lama tetapi masih sangat relevan hari ini.
Untuk apa nilainya - saya mendapatkan 500 dengan
DEBUG = False
untuk semua halaman di situs saya.Saya tidak mendapatkan traceback saat debug.
Saya harus melalui setiap tautan statis di templat saya di dalam situs saya dan menemukan satu / (garis miring) di depan sumber gambar saya. {% statis ... %}. Ini menyebabkan 500 kesalahan dalam
DEBUG = False
tetapi bekerja dengan baikDebug = True
tanpa kesalahan. Sangat menyebalkan! Diperingatkan! Banyak jam waktu terbuang karena garis miring ...sumber
Anda mungkin ingin menjalankan
python manage.py collectstatic
setelah mengaturDEBUG = False
danALLOWED_HOSTS = ['127.0.0.1']
masuksettings.py
. Setelah dua langkah ini aplikasi web saya berjalan dengan baik di server lokal saya bahkan dengan DEBUG = Mode salah.BTW saya memiliki pengaturan ini di
settings.py
.Saya berasumsi mungkin pengaturan whitenoise ada hubungannya dengan perintah collectstatic.
sumber
Ok setelah mencoba banyak hal, solusi yang tepat adalah ...
Anda perlu mengatur
DEBUG = 'FALSE'
tidakFalse
atauFALSE
, tetapi'FALSE'
dengan''
sumber