Django: struktura projekta i podešavanja (settings.py)

Lekcija 3 od 9 · Python web: Django projekat

U fajlu settings.py je sve što određuje kako projekat radi: koje aplikacije su uključene, gde su šabloni i statički fajlovi, koji jezik i vremenska zona, koja baza. U ovoj lekciji ga podešavamo za Logo kreator i pravimo folder za šablone.

Pre nego što počneš: potrebno predznanje – projekat i aplikacije.
Kako da učiš: radi u svom projektu korak po korak i posle svake lekcije proveri da li server radi; zadatak na kraju prvo uradi sam/a. Kod je za Django 5.2 (LTS) i Python 3.12+; svaki deo upiši u fajl naveden u komentaru na vrhu primera.

Fajlovi projekta

FajlUloga
manage.pykomande: runserver, migrate, startapp, createsuperuser, shell…
logo_kreator/settings.pypodešavanja (ova lekcija)
logo_kreator/urls.pyglavna mapa adresa (lekcija 4)
logo_kreator/wsgi.py, asgi.pyulaz za server na internetu (Gunicorn – lekcija 9)
logoi/models.py, views.py, admin.pymodeli, pogledi, admin aplikacije
logoi/migrations/istorija izmena baze
requirements.txtspisak paketa projekta (pravimo ga ispod)

Izmene u settings.py

# logo_kreator/settings.py – izmene u odnosu na fajl koji je napravio startproject

INSTALLED_APPS = [
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    # naše aplikacije
    "logoi",
    "nalozi",
]

TEMPLATES = [
    {
        "BACKEND": "django.template.backends.django.DjangoTemplates",
        "DIRS": [BASE_DIR / "templates"],      # zajednički šabloni (base.html, registration/...)
        "APP_DIRS": True,                      # i šabloni iz foldera templates/ svake aplikacije
        "OPTIONS": {
            "context_processors": [
                "django.template.context_processors.request",
                "django.contrib.auth.context_processors.auth",
                "django.contrib.messages.context_processors.messages",
            ],
        },
    },
]

LANGUAGE_CODE = "sr-latn"          # poruke Django-a (forme, admin) na srpskom, latinica
TIME_ZONE = "Europe/Belgrade"
USE_I18N = True
USE_TZ = True

STATIC_URL = "static/"

# prijava i odjava (lekcija 7)
LOGIN_URL = "login"
LOGIN_REDIRECT_URL = "moji_logoi"
LOGOUT_REDIRECT_URL = "naslovna"
PodešavanjeZašto
INSTALLED_APPSDjango „zna“ samo za uključene aplikacije: njihove modele, šablone, admin
TEMPLATES → DIRSfolder templates u korenu projekta za zajedničke šablone (base.html, strane za prijavu)
LANGUAGE_CODE = "sr-latn"greške u formama i admin panel na srpskom, latinicom
TIME_ZONE, USE_TZvreme se čuva u UTC, a prikazuje po beogradskom vremenu
STATIC_URLadresa pod kojom su CSS, JS i slike: /static/...
LOGIN_*kuda vodi prijava i odjava (lekcija 7)

Napravi i prazne foldere za šablone: templates/ u korenu, templates/registration/, logoi/templates/logoi/ i nalozi/templates/nalozi/. Ime aplikacije se ponavlja u putanji (logoi/templates/logoi/) da se šabloni dve aplikacije sa istim imenom fajla ne bi pomešali.

DEBUG i SECRET_KEY

PodešavanjeRazvojNa internetu
DEBUGTrue – detaljna strana greške sa kodomuvek False – detalji greške bi otkrili kod i podešavanja
SECRET_KEYvrednost iz startprojecttajna iz promenljive okruženja, nikad u kodu na GitHub-u
ALLOWED_HOSTSprazno (radi localhost)ime domena sajta

Kako se ovo podešava za server – u lekciji Postavljanje na internet.

Baza: SQLite i PostgreSQL

# podrazumevano (već je u settings.py) – SQLite, jedan fajl u projektu
DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.sqlite3",
        "NAME": BASE_DIR / "db.sqlite3",
    }
}

SQLite je dovoljan za razvoj i za male sajtove. Na serveru se obično koristi PostgreSQL; tada se umesto ovog bloka čita adresa baze iz promenljive okruženja (lekcija 9). Kod modela i pogleda se pri tome ne menja – o razlikama brine Django.

requirements.txt

pip freeze > requirements.txt
:: na drugom računaru (ili serveru):
pip install -r requirements.txt

Fajl sadrži tačne verzije paketa, npr. Django==5.2.8. Ponovi pip freeze svaki put kada instaliraš novi paket.

Zadaci za vežbu

Za svaki zadatak postoji primer, uputstvo i rešenje.

ZADATAK 01Težina: srednje

Šta je pogrešno?

Učenik je u settings.py napisao INSTALLED_APPS = [..., "Logoi"], DEBUG = True na serveru i stavio SECRET_KEY u javni GitHub repozitorijum. Navedi tri problema i kako se rešavaju.

Česte greške i saveti
  • Posle izmene INSTALLED_APPS pokreni python manage.py check – prijaviće grešku pre nego što je primetiš u pregledaču.
  • Folder templates u DIRS je u korenu projekta, pored manage.py – ne unutar logo_kreator/.
  • Ne kopiraj ceo settings.py sa interneta – menjaj samo potrebne delove.

Proveri znanje

Otvori kviz

Podešavanja projekta

1. Šta mora da bude DEBUG na sajtu dostupnom svima?



2. Gde se upisuje da projekat koristi aplikaciju logoi?




3. Čemu služi requirements.txt?