# Django sissejuhatav juhend: ehita kiiresti oma esimene veebirakendus
Django on kõrgetasemeline Pythoni veebiraamistik, mille eesmärk on kiire arendus ja lihtne disain. See järgib mudel-mall-vaade (MTV) arhitektuuri, julgustades koodi taaskasutust ja komponentideks jagamist. See juhend juhatab sind samm-sammult lihtsa Django rakenduse loomisel, et sa saaksid kiiresti alustada.
## 1. Keskkonna seadistamine
Esiteks pead sa veenduma, et sinu süsteemis on Python installitud. Django soovitab kasutada Python 3.6 või uuemat versiooni.
### 1.1 Pythoni installimine
Kui sinu süsteemis pole Pythonit installitud, saad selle alla laadida ja installida [Pythoni ametlikult veebisaidilt](https://www.python.org/downloads/).
### 1.2 Virtuaalse keskkonna loomine (Virtual Environment)
Erinevate projektide sõltuvuste isoleerimiseks on tungivalt soovitatav kasutada virtuaalset keskkonda.
1. Ava terminal või käsuviip.
2. Loo projektikataloog, näiteks `myproject`:
```bash
mkdir myproject
cd myproject
```
3. Loo ja aktiveeri virtuaalne keskkond:
```bash
python3 -m venv venv # või python -m venv venv
source venv/bin/activate # Linux/macOS
venv\Scripts\activate # Windows
```
Pärast virtuaalse keskkonna aktiveerimist kuvatakse sinu terminali viipas `(venv)`, mis näitab, et sa kasutad virtuaalset keskkonda.
### 1.3 Django installimine
Aktiveeritud virtuaalses keskkonnas kasuta pip-i Django installimiseks:
```bash
pip install Django
```
Kontrolli, kas installimine õnnestus:
```bash
python -m django --version
```
Sa peaksid nägema Django versiooninumbrit.
## 2. Django projekti loomine
Pärast Django installimist saad luua uue Django projekti.
1. Endiselt oma projektikataloogis (`myproject`) käivita järgmine käsk:
```bash
django-admin startproject mysite
```
See loob kataloogi `myproject` alla kataloogi nimega `mysite`, mis sisaldab Django projekti skelettfaili.
2. Mine `mysite` kataloogi:
```bash
cd mysite
```
3. Django projekti kataloogistruktuur on järgmine:
```
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
```
* `manage.py`: käsurea tööriist Django projekti haldamiseks.
* `mysite/`: Pythoni pakett, mis sisaldab projekti konfiguratsiooni.
* `__init__.py`: tühi fail, mis ütleb Pythonile, et seda kataloogi tuleks käsitleda Pythoni paketina.
* `settings.py`: projekti konfiguratsioonifail, näiteks andmebaasi seaded, silumisrežiim jne.
* `urls.py`: URL-i marsruutimise konfiguratsioon, mis kaardistab URL-id vaatefunktsioonidele.
* `asgi.py`: ASGI (Asynchronous Server Gateway Interface) konfiguratsioonifail asünkroonsete rakenduste juurutamiseks.
* `wsgi.py`: WSGI (Web Server Gateway Interface) konfiguratsioonifail traditsiooniliste sünkroonsete rakenduste juurutamiseks.
## 3. Arendusserveri käivitamine
Django'ga on kaasas kergekaaluline arendusserver, mis võimaldab sul kohapeal arendada ja testida.
1. Käivita `mysite` kataloogis järgmine käsk:
```bash
python manage.py runserver
```
2. Ava oma veebilehitseja ja külasta `http://127.0.0.1:8000/`. Sa peaksid nägema lehte tekstiga "It worked! Congratulations on your first Django-powered page.".
## 4. Django rakenduse loomine
Üks Django projekt võib sisaldada mitu rakendust. Loome rakenduse nimega `myapp`.
1. Ava uus terminaliaken (hoia arendusserver töös).
2. Käivita `mysite` kataloogis järgmine käsk:
```bash
python manage.py startapp myapp
```
See loob `mysite` kataloogi alla kataloogi nimega `myapp`, mis sisaldab Django rakenduse skelettfaile.
3. Django rakenduse kataloogistruktuur on järgmine:
```
myapp/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
```
* `__init__.py`: Tühi fail, mis ütleb Pythonile, et seda kataloogi tuleks käsitleda Pythoni pakina.
* `admin.py`: Kasutatakse Django haldusliidese konfigureerimiseks.
* `apps.py`: Rakenduse konfiguratsioon.
* `migrations/`: Kasutatakse andmebaasi migratsioonide haldamiseks.
* `models.py`: Defineerib andmemudelid (andmebaasi tabelid).
* `tests.py`: Kirjutab testjuhtumeid.
* `views.py`: Defineerib vaatefunktsioonid, mis töötlevad päringuid ja tagastavad vastuseid.
4. Lisa `myapp` failis `mysite/settings.py` loendisse `INSTALLED_APPS`:
```python
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp', # Lisa myapp
]
```
## 5. Lihtsa vaate loomine
Nüüd loome lihtsa vaate, mis kuvab veebilehitsejas teksti "Hello, Django!".
1. Muuda faili `myapp/views.py` ja lisa järgmine kood:
```python
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, Django!")
```
2. Loo fail `myapp/urls.py` ja kaardista URL vaatefunktsioonile:
```python
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
```
3. Kaasa `myapp/urls.py` fail `mysite/urls.py` faili:
```python
from django.urls import include, path
from django.contrib import admin
urlpatterns = [
path('admin/', admin.site.urls),
path('myapp/', include('myapp.urls')), # Lisa myapp URL-i konfiguratsioon
]
```
4. Külasta `http://127.0.0.1:8000/myapp/`. Sa peaksid nägema lehte "Hello, Django!".
## 6. Loo mudel
Loome lihtsa mudeli andmete salvestamiseks.
1. Muuda `myapp/models.py` faili, lisa järgnev kood:
```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
```
See defineerib mudeli nimega `Question`, mis sisaldab kahte välja: `question_text` (CharField) ja `pub_date` (DateTimeField).
2. Loo ja rakenda andmebaasi migratsioonid:
```bash
python manage.py makemigrations myapp
python manage.py migrate
```
`makemigrations` käsk loob migratsioonifaili vastavalt sinu mudelile, `migrate` käsk rakendab migratsioonid andmebaasile.
## 7. Kasuta Django haldusliidest
Django pakub võimsat haldusliidest, mis võimaldab mugavalt hallata sinu andmeid.
1. Loo superkasutaja:
```bash
python manage.py createsuperuser
```
Järgi juhiseid kasutajanime, e-posti ja parooli sisestamiseks.
2. Muuda `myapp/admin.py` faili, registreeri `Question` mudel:
```python
from django.contrib import admin
from .models import Question
admin.site.register(Question)
```
3. Külasta `http://127.0.0.1:8000/admin/`, kasuta loodud superkasutajat sisselogimiseks. Sa peaksid nägema "Questions" moodulit, mis võimaldab küsimusi lisada, muuta ja kustutada.
## 8. Kasuta malle
Mallide kasutamine võimaldab paindlikumalt genereerida HTML-lehti.
1. Loo `myapp` kataloogis kataloog nimega `templates` ja seejärel loo `templates` kataloogis kataloog nimega `myapp` ( `myapp/templates/myapp` ).
2. Loo `myapp/templates/myapp` kataloogis fail nimega `index.html` ja lisa järgmine kood:
```html
Hello, Django!
The current time is: {{ current_time }}
```
3. Muuda faili `myapp/views.py` ja kasuta malli:
```python
from django.shortcuts import render
import datetime
def index(request):
now = datetime.datetime.now()
return render(request, 'myapp/index.html', {'current_time': now})
```
`render` funktsioon laadib malli ja edastab andmed mallile renderdamiseks.
4. Külasta uuesti `http://127.0.0.1:8000/myapp/`. Sa peaksid nägema lehte, mis sisaldab praegust kellaaega.
## 9. Järeldus
Selle juhendi abil oled õppinud Django põhimõisteid ja kasutusviise, sealhulgas keskkonna seadistamist, projekti ja rakenduse loomist, mudelite määratlemist, vaadete loomist ja mallide kasutamist. See on alles algus, Django pakub rikkalikke funktsioone, mida saad edasi õppida ja uurida, et luua keerukamaid veebirakendusi.