Web programiranje → Početak Django aplikacije → Struktura Django projekta
Struktura Django projekta i osnovna konfiguracija
Web početna:
Povratak na vodič |
Sledeća lekcija: Views i URL routing
Uvod
U prethodnoj lekciji kreirao si prvi Django projekat i pokrenuo server.
Sada ćemo razumeti kako projekat zaista funkcioniše “iznutra”.
Da razumeš strukturu Django projekta i osnovna podešavanja koja su potrebna za razvoj aplikacije.
Struktura Django projekta
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
Unutrašnji folder ima isti naziv kao projekat — tu se nalazi glavna konfiguracija.
Šta rade ovi fajlovi?
- manage.py — upravljanje projektom (komande)
- settings.py — konfiguracija aplikacije
- urls.py — routing (linkovi)
- wsgi.py — pokretanje aplikacije na serveru
settings.py — najvažniji fajl
Ovo je centralno mesto gde se podešava Django projekat.
Ovde se definišu:
- baza podataka
- instalirane aplikacije
- debug mod
Podešavanje baze podataka
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',
}
}
SQLite je dobar za razvoj, dok se PostgreSQL koristi u produkciji.
Debug mod
DEBUG = True
Dok razvijaš aplikaciju, debug treba biti uključen.
U produkciji DEBUG mora biti isključen (False).
requirements.txt
Ovaj fajl sadrži listu svih potrebnih paketa.
pip freeze > requirements.txt
Omogućava lako pokretanje projekta na drugom računaru ili serveru.
Procfile (za deployment)
Procfile definiše kako se aplikacija pokreće na serveru:
web: gunicorn logo_kreator.wsgi --log-file -
Ovo je obavezno za platforme kao što je Heroku.
Kreiranje aplikacije unutar projekta
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
Dodavanje aplikacije u projekat
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.
1. Kreiraj novu aplikaciju 2. Dodaj je u INSTALLED_APPS 3. Pokreni server
Posmatraj da li aplikacija radi bez greške.
Priprema za deployment (Git i Heroku)
Kada razvijemo aplikaciju lokalno, sledeći korak je da je postavimo na internet.
Za to koristimo:
- Git — za verzionisanje koda
- Heroku — platformu za pokretanje aplikacije
Deployment znači da aplikacija postaje dostupna svima putem interneta.
Git — čuvanje i verzionisanje koda
Git omogućava da pratimo promene u projektu i lako ga postavimo na server.
git init
git add .
git commit -m "Prva verzija projekta"
Git je standard u svim profesionalnim projektima.
Heroku — pokretanje aplikacije
Heroku je platforma koja omogućava da pokreneš Django aplikaciju online.
On automatski:
- instalira pakete
- pokreće server
- hostuje aplikaciju
requirements.txt
Ovaj fajl sadrži listu svih Python paketa:
pip freeze > requirements.txt
Procfile
Definiše kako se aplikacija pokreće:
web: gunicorn logo_kreator.wsgi --log-file -
Zašto je važno da projekat može da se pokrene na drugom računaru bez dodatnog podešavanja?
Zaključak
- razumeš strukturu projekta
- znaš šta radi settings.py
- znaš kako se dodaje aplikacija
- razumeš osnovu deploy-a
Šta sledi?
- views.py — logika aplikacije
- urls.py — povezivanje ruta
- prva prava stranica
KREIRANJE DJANGO WEB APLIKACIJE- HEROKU PLATFORMA NASTAVAK
Kreiranje Procfile
web: gunicorn logo_kreator.wsgi --log-file -
To je sadržano u fajlu. Ovim se definiše koja će se komanda pokrenuti kad se startuje server
Kreiranje static fajlova
STATICFILES_DIRS=[(os.path.join(BASE_DIR,'assets'))] u okviru settings.py
Ovaj direktorijum ne sme biti isti sa STATIC_ROOT. Obično se ostavi da assets bude prazan na početku
Unutar settings.py:
# https://docs.djangoproject.com/en/2.2/howto/static-files/
STATIC_ROOT = os.path.join(BASE_DIR, 'assets')
STATIC_URL = '/static/'
STATICFILES_DIRS=[(os.path.join(BASE_DIR,'assets'))]
Ažuriranje izmena
Posle ponovnog izvršenja komande push i pokretanja aplikacije na web serveru prikazaće se strana:
U meniju treba odabrati stavku data(vidi sliku ), da bi upravljali bazama na heroku platformi:
Ako ponovo pokrenemo aplikaciju prikazaće se naslovna strana kao na slici:
Dodaćemo sada plug-in whitenoice koji olakšava rad sa static fajlovima:
u command prompt-u:
Posle restartovanja servera i osvežavanja naslovne strane :
|
Prethodno
|< Kreiranje aplikacije na Heroku Web Platformi |
Sledeće
Dodavanje modula za registraciju >| |