Airline
Django - projekt Airline
Tvorba projektu
django-admin startproject airline
První aplikace (Flights) v projektu
python manage.py startapp flights
V souboru airline\settings.py
INSTALLED_APPS = [
'flights', # doplníme název aplikace
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]V souboru airline\urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('flights/', include('flights.urls')),
]Vytvoříme strukturu tabulek v databázi. V souboru aplikace flights\models.py
class Airport(models.Model):
code = models.CharField(max_length=3)
city = models.CharField(max_length=64)
def __str__(self):
return f"{self.city} ({self.code})"
class Flight(models.Model):
origin = models.ForeignKey(Airport, on_delete=models.CASCADE, related_name="departures")
destination = models.ForeignKey(Airport, on_delete=models.CASCADE, related_name="arrivals")
duration = models.IntegerField()
def __str__(self):
return f"{self.id}: {self.origin} -> {self.destination} ({self.duration})"
class Passenger(models.Model):
first = models.CharField(max_length=64)
last = models.CharField(max_length=64)
flights = models.ManyToManyField(Flight, blank=True, related_name="passengers")
def __str__(self):
return f"{self.first} {self.last}" Další typy modelů (datových typu jednotlivých polí v tabulce) naleznete v dokumentaci Djanga.
Vytvoříte soubor pro aplikaci flights\urls.py
from django.urls import path
from . import views
urlpatterns = [
path("", views.index, name="index")
]Nyní vytvoříte správné šablony (layout.html a index.html) např. podle django-templates.
Do bloku {% block body %} vložíte kód:
<ul>
{% for flight in flights %}
<li><a href="#">
Flight {{ flight.id }}: {{ flight.origin }} to {{ flight.destination }}
</a>
</li>
{% endfor %}
</ul>Upravíte soubor pro aplikaci flights\views.py (logika aplikace, soubor funkcí, které renderují výstupy pro šablony)
from .models import Flight
def index(request):
return render(request, "flights/index.html", {
"flights": Flight.objects.all()
})Připravíme a vytvoříme databázi (v cmd.exe)
python manage.py makemigrationspython manage.py migrateVytvoříte superuživatele (zvolíte uživatelské jméno a heslo) pomocí příkazu:
python manage.py createsuperuserVýstup může vypadat takto:
(virtual-django) C:\airline>python manage.py createsuperuser
Username (leave blank to use 'martinek.p'): admin
Email address:
Password:
Password (again):
Superuser created successfully.Upravíme soubor admin.py v aplikaci:
from .models import Airport, Flight, Passenger
admin.site.register(Airport)
admin.site.register(Flight)
admin.site.register(Passenger)A nyní můžeme přímo editovat databázi v admin rozhraní aplikace.