# Uvodni vodnik za Django: Hitro ustvarite svojo prvo spletno aplikacijo
Django je napreden Python spletni okvir, katerega cilj je hiter razvoj in jedrnato oblikovanje. Sledi arhitekturi model-predloga-pogled (MTV) in spodbuja ponovno uporabo kode in modularnost. Ta vodnik vas bo korak za korakom vodil skozi ustvarjanje preproste aplikacije Django, da boste lahko hitro začeli.
## 1. Priprava okolja
Najprej se morate prepričati, da imate v sistemu nameščen Python. Django priporoča uporabo Python 3.6 ali novejše različice.
### 1.1 Namestitev Pythona
Če v sistemu nimate nameščenega Pythona, ga lahko prenesete in namestite s [spletne strani Python](https://www.python.org/downloads/).
### 1.2 Ustvarjanje virtualnega okolja (Virtual Environment)
Za izolacijo odvisnosti med različnimi projekti je zelo priporočljivo uporabljati virtualno okolje.
1. Odprite terminal ali ukazni poziv.
2. Ustvarite mapo projekta, na primer `myproject`:
```bash
mkdir myproject
cd myproject
```
3. Ustvarite in aktivirajte virtualno okolje:
```bash
python3 -m venv venv # ali python -m venv venv
source venv/bin/activate # Linux/macOS
venv\Scripts\activate # Windows
```
Ko aktivirate virtualno okolje, se bo v pozivu terminala prikazalo `(venv)`, kar pomeni, da uporabljate virtualno okolje.
### 1.3 Namestitev Django
V aktiviranem virtualnem okolju uporabite pip za namestitev Django:
```bash
pip install Django
```
Preverite, ali je namestitev uspešna:
```bash
python -m django --version
```
Morali bi videti številko različice Django.
## 2. Ustvarjanje projekta Django
Po namestitvi Django lahko ustvarite nov projekt Django.
1. Še vedno v mapi projekta (`myproject`) zaženite naslednji ukaz:
```bash
django-admin startproject mysite
```
To bo v mapi `myproject` ustvarilo mapo z imenom `mysite`, ki vsebuje ogrodje datotek projekta Django.
2. Pojdite v mapo `mysite`:
```bash
cd mysite
```
3. Struktura mape projekta Django je naslednja:
```
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
```
* `manage.py`: Orodje ukazne vrstice za upravljanje projekta Django.
* `mysite/`: Python paket, ki vsebuje konfiguracijo projekta.
* `__init__.py`: Prazna datoteka, ki pove Pythonu, da je treba to mapo obravnavati kot Python paket.
* `settings.py`: Konfiguracijska datoteka projekta, na primer nastavitve baze podatkov, način odpravljanja napak itd.
* `urls.py`: Konfiguracija usmerjanja URL-jev, ki preslikuje URL-je v funkcije pogleda.
* `asgi.py`: Konfiguracijska datoteka ASGI (Asynchronous Server Gateway Interface) za uvajanje asinhronih aplikacij.
* `wsgi.py`: Konfiguracijska datoteka WSGI (Web Server Gateway Interface) za uvajanje tradicionalnih sinhronih aplikacij.## 3. Zagon razvojnega strežnika
Django ima vgrajen lahek razvojni strežnik, ki vam omogoča lokalni razvoj in testiranje.
1. V mapi `mysite` zaženite naslednji ukaz:
```bash
python manage.py runserver
```
2. Odprite brskalnik in obiščite `http://127.0.0.1:8000/`. Videti bi morali stran z napisom "It worked! Congratulations on your first Django-powered page.".
## 4. Ustvarjanje Django aplikacije
En projekt Django lahko vsebuje več aplikacij. Ustvarimo aplikacijo z imenom `myapp`.
1. Odprite novo okno terminala (razvojni strežnik naj deluje).
2. V mapi `mysite` zaženite naslednji ukaz:
```bash
python manage.py startapp myapp
```
To bo ustvarilo mapo z imenom `myapp` v mapi `mysite`, ki vsebuje ogrodje datotek za aplikacijo Django.
3. Struktura mape aplikacije Django je naslednja:
```
myapp/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
```
* `__init__.py`: Prazna datoteka, ki pove Pythonu, da je treba to mapo obravnavati kot Python paket.
* `admin.py`: Uporablja se za konfiguracijo Django administracijskega vmesnika.
* `apps.py`: Konfiguracija aplikacije.
* `migrations/`: Uporablja se za upravljanje migracij baze podatkov.
* `models.py`: Definira podatkovne modele (tabele baze podatkov).
* `tests.py`: Pisanje testnih primerov.
* `views.py`: Definira funkcije pogleda, ki obdelujejo zahteve in vračajo odzive.
4. V datoteki `mysite/settings.py` dodajte `myapp` na seznam `INSTALLED_APPS`:
```python
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp', # Dodajte myapp
]
```
## 5. Ustvarjanje preprostega pogleda
Zdaj bomo ustvarili preprost pogled, ki bo v brskalniku prikazal "Hello, Django!".
1. Uredite datoteko `myapp/views.py` in dodajte naslednjo kodo:
```python
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, Django!")
```
2. Ustvarite datoteko `myapp/urls.py` in preslikajte URL na funkcijo pogleda:
```python
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
```
3. Vključite `myapp/urls.py` v `mysite/urls.py`:
```python
from django.urls import include, path
from django.contrib import admin
urlpatterns = [
path('admin/', admin.site.urls),
path('myapp/', include('myapp.urls')), # Dodajte konfiguracijo URL-jev za myapp
]
```
4. Obiščite `http://127.0.0.1:8000/myapp/`. Morali bi videti stran z napisom "Hello, Django!"
## 6. Ustvarjanje modela
Ustvarimo preprost model za shranjevanje podatkov.
1. Uredite datoteko `myapp/models.py` in dodajte naslednjo kodo:
```python
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
def __str__(self):
return self.question_text
```
To definira model z imenom `Question`, ki vsebuje dve polji: `question_text` (CharField) in `pub_date` (DateTimeField).
2. Ustvarite in uporabite migracije baze podatkov:
```bash
python manage.py makemigrations myapp
python manage.py migrate
```
Ukaz `makemigrations` bo ustvaril migracijsko datoteko na podlagi vašega modela, ukaz `migrate` pa bo migracijo uporabil na bazi podatkov.
## 7. Uporaba Django administrativnega vmesnika
Django ponuja zmogljiv administrativni vmesnik, ki omogoča enostavno upravljanje vaših podatkov.
1. Ustvarite super uporabnika:
```bash
python manage.py createsuperuser
```
Sledite navodilom za vnos uporabniškega imena, e-pošte in gesla.
2. Uredite datoteko `myapp/admin.py` in registrirajte model `Question`:
```python
from django.contrib import admin
from .models import Question
admin.site.register(Question)
```
3. Obiščite `http://127.0.0.1:8000/admin/` in se prijavite z ustvarjenim super uporabnikom. Morali bi videti modul "Questions", kjer lahko dodajate, urejate in brišete vprašanja.
## 8. Uporaba predlog
Uporaba predlog omogoča bolj prilagodljivo generiranje HTML strani.
1. V mapi `myapp` ustvarite mapo z imenom `templates` in nato v mapi `templates` ustvarite mapo z imenom `myapp` (`myapp/templates/myapp`).
2. V mapi `myapp/templates/myapp` ustvarite datoteko z imenom `index.html` in dodajte naslednjo kodo:
```html
Hello, Django!
The current time is: {{ current_time }}
```
3. Uredite datoteko `myapp/views.py` in uporabite predlogo:
```python
from django.shortcuts import render
import datetime
def index(request):
now = datetime.datetime.now()
return render(request, 'myapp/index.html', {'current_time': now})
```
Funkcija `render` naloži predlogo in posreduje podatke predlogi za upodabljanje.
4. Ponovno obiščite `http://127.0.0.1:8000/myapp/`. Morali bi videti stran, ki vsebuje trenutni čas.
## 9. Sklep
S tem vodnikom ste spoznali osnovne koncepte in uporabo Django, vključno z nastavitvijo okolja, ustvarjanjem projektov in aplikacij, definiranjem modelov, ustvarjanjem pogledov in uporabo predlog. To je šele začetek, Django ponuja bogato funkcionalnost, ki jo lahko nadaljujete z učenjem in raziskovanjem ter gradite bolj kompleksne spletne aplikacije.