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.
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_?
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_?