# Django Kezdő Útmutató: Gyorsan Építsd Fel Az Első Web Alkalmazásodat
A Django egy magas szintű Python webes keretrendszer, melynek célja a gyors fejlesztés és az egyszerű tervezés. A modell-sablon-nézet (MTV) architektúrát követi, ösztönzi a kód újrafelhasználását és a komponensek használatát. Ez az útmutató lépésről lépésre végigvezet egy egyszerű Django alkalmazás létrehozásán, hogy gyorsan belevághass.
## 1. Környezet Beállítása
Először is, meg kell győződnöd arról, hogy a rendszereden telepítve van a Python. A Django a Python 3.6 vagy újabb verzióját ajánlja.
### 1.1 Python Telepítése
Ha a rendszereden nincs telepítve a Python, letöltheted és telepítheted a [Python hivatalos weboldaláról](https://www.python.org/downloads/).
### 1.2 Virtuális Környezet (Virtual Environment) Létrehozása
A különböző projektek közötti függőségek elkülönítése érdekében erősen ajánlott virtuális környezetet használni.
1. Nyisd meg a terminált vagy a parancssort.
2. Hozd létre a projekt könyvtárát, például `myproject`:
```bash
mkdir myproject
cd myproject
```
3. Hozd létre és aktiváld a virtuális környezetet:
```bash
python3 -m venv venv # Vagy python -m venv venv
source venv/bin/activate # Linux/macOS
venv\Scripts\activate # Windows
```
A virtuális környezet aktiválása után a terminál promptod `(venv)`-t fog mutatni, jelezve, hogy virtuális környezetet használsz.
### 1.3 Django Telepítése
Az aktivált virtuális környezetben használd a pip-et a Django telepítéséhez:
```bash
pip install Django
```
Ellenőrizd, hogy a telepítés sikeres volt-e:
```bash
python -m django --version
```
Látnod kell a Django verziószámát.
## 2. Django Projekt Létrehozása
A Django telepítése után létrehozhatsz egy új Django projektet.
1. Még mindig a projekt könyvtáradban (`myproject`), futtasd a következő parancsot:
```bash
django-admin startproject mysite
```
Ez létrehoz egy `mysite` nevű könyvtárat a `myproject` könyvtárban, amely tartalmazza a Django projekt vázát.
2. Lépj be a `mysite` könyvtárba:
```bash
cd mysite
```
3. A Django projekt könyvtárstruktúrája a következő:
```
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
```
* `manage.py`: Egy parancssori eszköz a Django projekt kezeléséhez.
* `mysite/`: A projekt konfigurációját tartalmazó Python csomag.
* `__init__.py`: Egy üres fájl, amely közli a Pythonnal, hogy a könyvtárat Python csomagként kell kezelni.
* `settings.py`: A projekt konfigurációs fájlja, például adatbázis beállítások, hibakeresési mód stb.
* `urls.py`: URL útválasztási konfiguráció, amely az URL-eket nézetfüggvényekhez rendeli.
* `asgi.py`: ASGI (Asynchronous Server Gateway Interface) konfigurációs fájl, aszinkron alkalmazások telepítéséhez.
* `wsgi.py`: WSGI (Web Server Gateway Interface) konfigurációs fájl, hagyományos szinkron alkalmazások telepítéséhez.
## 3. Fejlesztői szerver indítása
A Django egy könnyű fejlesztői szervert tartalmaz, amely megkönnyíti a helyi fejlesztést és tesztelést.
1. A `mysite` könyvtárban futtassa a következő parancsot:
```bash
python manage.py runserver
```
2. Nyissa meg a böngészőjét, és látogassa meg a `http://127.0.0.1:8000/` címet. Egy "It worked! Congratulations on your first Django-powered page." oldalt kell látnia.
## 4. Django alkalmazás létrehozása
Egy Django projekt több alkalmazást is tartalmazhat. Hozzunk létre egy `myapp` nevű alkalmazást.
1. Nyisson meg egy új terminálablakot (hagyja futni a fejlesztői szervert).
2. A `mysite` könyvtárban futtassa a következő parancsot:
```bash
python manage.py startapp myapp
```
Ez létrehoz egy `myapp` nevű könyvtárat a `mysite` könyvtárban, amely tartalmazza a Django alkalmazás vázfájljait.
3. A Django alkalmazás könyvtárszerkezete a következő:
```
myapp/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
```
* `__init__.py`: Egy üres fájl, amely közli a Pythonnal, hogy a könyvtárat Python csomagként kell kezelni.
* `admin.py`: A Django adminisztrációs felület konfigurálására szolgál.
* `apps.py`: Alkalmazás konfiguráció.
* `migrations/`: Az adatbázis migrációk kezelésére szolgál.
* `models.py`: Adatmodellek (adatbázis táblák) definiálása.
* `tests.py`: Tesztesetek írása.
* `views.py`: Nézetfüggvények definiálása, amelyek kéréseket dolgoznak fel és válaszokat adnak vissza.
4. A `mysite/settings.py` fájlban adja hozzá a `myapp` elemet az `INSTALLED_APPS` listához:
```python
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp', # Add myapp / Add myapp
]
```
## 5. Egyszerű nézet létrehozása
Most hozzunk létre egy egyszerű nézetet, amely a "Hello, Django!" szöveget jeleníti meg a böngészőben.
1. Szerkessze a `myapp/views.py` fájlt, és adja hozzá a következő kódot:
```python
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, Django!")
```
2. Hozzon létre egy `myapp/urls.py` fájlt, és képezze le az URL-t a nézetfüggvényre:
```python
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
```
3. Illessze be a `myapp/urls.py` fájlt a `mysite/urls.py` fájlba:
```python
from django.urls import include, path
from django.contrib import admin
urlpatterns = [
path('admin/', admin.site.urls),
path('myapp/', include('myapp.urls')), # Adja hozzá a myapp URL konfigurációját
]
```
4. Látogassa meg a `http://127.0.0.1:8000/myapp/` címet. Látnia kell a "Hello, Django!" oldalt.
## 6. Modell létrehozása
Hozzunk létre egy egyszerű modellt néhány adat tárolására.
1. Szerkessze a `myapp/models.py` fájlt, és adja hozzá a következő kódot:
```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
```
Ez egy `Question` nevű modellt definiál, amely két mezőt tartalmaz: `question_text` (CharField) és `pub_date` (DateTimeField).
2. Hozzon létre és alkalmazzon adatbázis-migrációkat:
```bash
python manage.py makemigrations myapp
python manage.py migrate
```
A `makemigrations` parancs létrehozza a migrációs fájlokat a modelljei alapján, a `migrate` parancs pedig alkalmazza a migrációkat az adatbázisra.
## 7. A Django adminisztrációs felület használata
A Django egy hatékony adminisztrációs felületet kínál, amely megkönnyíti az adatok kezelését.
1. Hozzon létre egy szuperfelhasználót:
```bash
python manage.py createsuperuser
```
Kövesse az utasításokat a felhasználónév, e-mail cím és jelszó megadásához.
2. Szerkessze a `myapp/admin.py` fájlt, és regisztrálja a `Question` modellt:
```python
from django.contrib import admin
from .models import Question
admin.site.register(Question)
```
3. Látogassa meg a `http://127.0.0.1:8000/admin/` címet, és jelentkezzen be a létrehozott szuperfelhasználóval. Látnia kell a "Questions" modult, ahol kérdéseket adhat hozzá, szerkeszthet és törölhet.
## 8. Sablonok használata
A sablonok használatával rugalmasabban generálhat HTML oldalakat.
1. Hozzon létre egy `templates` nevű könyvtárat a `myapp` könyvtárban, majd hozzon létre egy `myapp` nevű könyvtárat a `templates` könyvtárban ( `myapp/templates/myapp` ).
2. Hozzon létre egy `index.html` nevű fájlt a `myapp/templates/myapp` könyvtárban, és adja hozzá a következő kódot:
```html
Hello, Django!
The current time is: {{ current_time }}
```
3. Szerkessze a `myapp/views.py` fájlt, és használja a sablont:
```python
from django.shortcuts import render
import datetime
def index(request):
now = datetime.datetime.now()
return render(request, 'myapp/index.html', {'current_time': now})
```
A `render` függvény betölti a sablont, és átadja az adatokat a sablonnak a rendereléshez.
4. Látogassa meg újra a `http://127.0.0.1:8000/myapp/` címet. Látnia kell egy oldalt az aktuális idővel.
## 9. Következtetés
Ezzel az útmutatóval megismerkedett a Django alapvető fogalmaival és használatával, beleértve a környezet beállítását, a projektek és alkalmazások létrehozását, a modellek definiálását, a nézetek létrehozását és a sablonok használatát. Ez csak a kezdet, a Django gazdag funkcionalitást kínál, amelyet tovább tanulmányozhat és felfedezhet, hogy összetettebb webes alkalmazásokat építsen.