Django settings.py debugu false yapma

settings.py dosyasındaki DEBUG = True seçeneğini neden False yapalım yaptığımızda çalışmamızda bozukluklar oluyor örneğin admin panelinde önceden tanımlanmış hazır css dosyası okunmuyor
Giriş paneli şekilsiz şemalsiz iskelet haliyle gözüküyor…

False yaptığınızda dönen hataları detaylı görebilirsiniz.
True olduğunda sadece http hatası döner.
False yaptığınızda css ler okunmuyorsa collectstatic i çalıştırmalısınız

False yapılma sebebi sunucuya konulup son kullanıcıya servis edilmesidir. Son kullanıcı böyle hatalarla karşılaşmak istemez.

1 Beğeni

Biraz daha detaylı anlatabilirmisiniz nereden çalıştırabilirim?

Üretim (production) ortamında yapmanız lazım.

Aldığınız hatayı daha açık bir şekilde belirtirseniz, yardımcı olabiliriz.

Django kullananların bildiği gibi admin paneli hazırda var sadece model ekleyip kullanabiliyorsun hazırda bulunan admin panelinin elbette hazır bir css dosyasıda var
üretim için DEBUG = False yaptığımızda admin sayfasının css çalışması çalıştırılmıyor düz iskelet haliyle kullanıcı adı ve şifre soran entrylere sahip html dosyası gözüküyor yani görüntü basit bir görüntü oluyor bilmem anlatabildim mi_?

https://docs.djangoproject.com/en/2.1/ref/contrib/staticfiles/

https://docs.djangoproject.com/en/2.1/howto/static-files/

Açılan HTML sayfasındaki ilgili CSS linklerini inceler misiniz? Nasıl bir yola sahipler?

anasayfada açılamayan css dosya görüntüsü

admin sayfasında açılamayan css dosyalarının görüntüsü

settings.py

"""
Django settings for projem project.

Generated by 'django-admin startproject' using Django 2.1.4.

For more information on this file, see
https://docs.djangoproject.com/en/2.1/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/2.1/ref/settings/
"""

import os

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/2.1/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '5kd!rm#9@3wy$#_96zcpohsd43bw%ga_les)&aet+w414$b=8e'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False

ALLOWED_HOSTS = ['127.0.0.1']


# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'uygulamam',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'projem.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

WSGI_APPLICATION = 'projem.wsgi.application'


# Database
# https://docs.djangoproject.com/en/2.1/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}


# Password validation
# https://docs.djangoproject.com/en/2.1/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]


# Internationalization
# https://docs.djangoproject.com/en/2.1/topics/i18n/

LANGUAGE_CODE = 'tr_TR'

TIME_ZONE = 'Europe/Istanbul'

USE_I18N = True

USE_L10N = True

USE_TZ = True


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.1/howto/static-files/

STATIC_URL = '/static/'
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),)
#STATIC_ROOT = os.path.join(BASE_DIR, 'static')

urls.py


from django.conf.urls import url
from django.contrib import admin
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
import uygulamam.views as uygulama

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$', uygulama.anasayfa),
    url(r'^haber/(?P<id>\d+)/$', uygulama.haberler),
]

urlpatterns += staticfiles_urlpatterns()

admin.py


from django.contrib import admin
from .models import modelim

admin.site.register(modelim)

models.py


from django.db import models
from django.utils import timezone

class modelim(models.Model):
    baslik = models.CharField(max_length=200)
    detay = models.TextField()
    tarih = models.DateTimeField(default=timezone.now)
    dosya1 = models.FileField(upload_to = 'static/dosyalar')

    def __str__(self):
        return self.baslik

views.py


from django.shortcuts import render
from .models import modelim

def anasayfa(request):
    tum_haberler = modelim.objects.all()
    return render(request, 'anasayfam.html', {'tum_haberler': tum_haberler})

def haberler(request, id):
    bir_haber = modelim.objects.get(id = id)
    return render(request, 'haberlerim.html', {'bir_haber': bir_haber})

anasayfam.html


<html>
    <head>
        <title>ANA SAYFA</title>
	<link rel="stylesheet" type="text/css" href="/static/css/style1.css">

    </head>

    <body>
        <p>TUM HABERLER</p>

	{% for bir_haber in tum_haberler %}
	    <h2><a href="/haber/{{ bir_haber.id }}">{{ bir_haber }}</a></h2>

	{% endfor %}

    </body>
</html>

django dosyalarım;

sitem/
    projem/
          settings.py
          urls.py
          wsgi.py
    static/
          admin
          css/
              style1.css
          dosyalar
          js
    uygulamam/
          templates/
                 anasayfam.html
                 haberlerim.html
          admin.py
          apps.py
          models.py
          tests.py
          views.py
    db.sqlite3
    manage.py

py manage.py collectstatic işlemiyle admin dosyaları static dosyamın içine geldi ama DEBUG = False yaptıktan sonra 404 hataları alıyorum 404 hatalarının resimleri ve dosyaların kodları üsteki iletide mevcud

STATICFILES_DIRS değişkenini yorum satırı yapıp STATIC_ROOT değişkenini aktif hale getirmen lazım sanırım, bir de ALLOWED_HOST içine ‘*’ ifadesini koyman gerekiyor olabilir

aktif edince STATIC_DIRS ile aynı olunca server çalıştırılmıyordu bende py manage.py collectstatic işleminden sonra pasif yaptım dediklerinizi şimdi deneyecem…

denedim gene 404 hatası aldım

Hala uğraşıyorum STATIC_URL = “/staticfiles/” yaptım denedim STATICFILES_DIRS 'i liste şeklinde yazdım onada “/staticfiles/” 'ı ekledim denedim yorum satırı yaptım STATIC_ROOT 'u sildim değiştirdim static dosyalarıma bir türlü ulaşamıyorum DEBUG = False yaptıktan sonra yapmam gerekenleri adım adım yapıyorum py manage.py collectstatic yaptıktan sonra sitesini çalıştıran bir video görmedim videolar hep orada bitiyor yapmam gereken başka ne var bilmiyorum_?

Yeni bir şeyle karşılaştım py manage.py runserver 127.0.0.1:80 --insecure ile serveri çalıştırdığımda static dosyalara ulaşıyor bir sakıncası varmı yada yayına alınca çıkabilecek bir sorun varmıdır_?

Ayrıca bazı sitelerde gördüğüm kadarıyla static dosyalar için apache falan kullanın diyor sebebi nedir_?

Adı üstünde, “insecure” yani “güvenli değil”; üretim ortamında kullanmayın.

“Nginx falan değil de Apache kullanın.” gibi mi?

django statik dosyalar için iyi değil apache kullanın şeklinde.

Güvenli olmayan nedir, Ne gibi sorunlar olabilir_?Üretim ortamında kullanmak benim elimdemi_?Host şirketleri benim istediğim gibimi yayınlıyorlar bu işleri bilmediğimden soruyorum yardımcı olursanız sevinirim_?