Š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.
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.
| Fajl | Uloga |
|---|---|
manage.py | komande: runserver, migrate, startapp, createsuperuser, shell… |
logo_kreator/settings.py | podešavanja (ova lekcija) |
logo_kreator/urls.py | glavna mapa adresa (lekcija 4) |
logo_kreator/wsgi.py, asgi.py | ulaz za server na internetu (Gunicorn – lekcija 9) |
logoi/models.py, views.py, admin.py | modeli, pogledi, admin aplikacije |
logoi/migrations/ | istorija izmena baze |
requirements.txt | spisak paketa projekta (pravimo ga ispod) |
# 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šavanje | Zašto |
|---|---|
INSTALLED_APPS | Django „zna“ samo za uključene aplikacije: njihove modele, šablone, admin |
TEMPLATES → DIRS | folder 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_TZ | vreme se čuva u UTC, a prikazuje po beogradskom vremenu |
STATIC_URL | adresa 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.
| Podešavanje | Razvoj | Na internetu |
|---|---|---|
DEBUG | True – detaljna strana greške sa kodom | uvek False – detalji greške bi otkrili kod i podešavanja |
SECRET_KEY | vrednost iz startproject | tajna iz promenljive okruženja, nikad u kodu na GitHub-u |
ALLOWED_HOSTS | prazno (radi localhost) | ime domena sajta |
Kako se ovo podešava za server – u lekciji Postavljanje na internet.
# 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.
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.
Za svaki zadatak postoji primer, uputstvo i rešenje.
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.
INSTALLED_APPS pokreni python manage.py check – prijaviće grešku pre nego što je primetiš u pregledaču.templates u DIRS je u korenu projekta, pored manage.py – ne unutar logo_kreator/.settings.py sa interneta – menjaj samo potrebne delove.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?
Web programiranje → Početak Django aplikacije → Struktura Django projekta
Web početna:
Povratak na vodič |
Sledeća lekcija: Views i URL routing
U prethodnoj lekciji kreirao si prvi Django projekat i pokrenuo server.
Sada ćemo razumeti kako projekat zaista funkcioniše “iznutra”.
Kada kreiraš projekat, dobijaš sledeću strukturu:
ime_projekta/
manage.py
ime_projekta/
__init__.py
settings.py
urls.py
wsgi.py
Primer:
logo_kreator/
manage.py
logo_kreator/
__init__.py
settings.py
urls.py
wsgi.py
Ovo je centralno mesto gde se podešava Django projekat.
Ovde se definišu:
Django po default-u koristi SQLite:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'database.sqlite3',
}
}
Za PostgreSQL koristimo:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'database',
'USER': 'postgres',
'PASSWORD': '*******',
'HOST': 'localhost',
'PORT': '5432',
}
}
DEBUG = True
Dok razvijaš aplikaciju, debug treba biti uključen.
Ovaj fajl sadrži listu svih potrebnih paketa.
pip freeze > requirements.txt
Omogućava lako pokretanje projekta na drugom računaru ili serveru.
Procfile definiše kako se aplikacija pokreće na serveru:
web: gunicorn logo_kreator.wsgi --log-file -
Django projekat može imati više aplikacija.
python manage.py startapp naslovna
Struktura aplikacije:
naslovna/
__init__.py
admin.py
models.py
views.py
tests.py
Nakon kreiranja, aplikaciju treba registrovati:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'naslovna'
]
Bez ovoga Django neće prepoznati aplikaciju.
Kada razvijemo aplikaciju lokalno, sledeći korak je da je postavimo na internet.
Za to koristimo:
Git omogućava da pratimo promene u projektu i lako ga postavimo na server.
git init
git add .
git commit -m "Prva verzija projekta"
Heroku je platforma koja omogućava da pokreneš Django aplikaciju online.
On automatski:
Ovaj fajl sadrži listu svih Python paketa:
pip freeze > requirements.txt
Definiše kako se aplikacija pokreće:
web: gunicorn logo_kreator.wsgi --log-file -
| Prethodno |<Kreiranje aplikacije na Heroku Web Platformi |
Sledeće Dodavanje modula za registraciju>| |