S_022025_S25 Advertisement S_022025_S25 Advertisement>						
												</a>
			
<script>
	$(function(){
		$.get( S_022025_S25 Advertisement

ML a neurónové siete v praktických príkladoch / 9. časť: Framework Django pre webové aplikácie na báze Pythonu

0

V predchádzajúcich častiach seriálu sme ukázali, ako naprogramovať model neurónovej siete v programovacom jazyku Python s využitím knižnice PyTorch a ako ho natrénovať, či už to bola detekcia rizika ochorenia, rozlíšenie jedlých a jedovatých húb, alebo rôzne kategorizácie, a ukázali sme aj jednoduchú neurónovú sieť schopnú generovať text. Ak chcete odladený kód v Pythone sprístupniť napríklad formou webovej aplikácie s používateľsky príjemným rozhraním, potrebujete na to vhodný framework. K dispozícii sú frameworky Django, Taipy, Streamlit a mnohé ďalšie. V článku predstavíme populárny open source framework Django.

S_022025_S25 Advertisement  

Framework je súprava nástrojov a knižníc potrebná na fungovanie príslušného typu aplikácie, v našom prípade webovej aplikácie. Django je back-end čiže framework bežiaci na serveri. Využíva architektúru MVT (Model View Teplate). Jeho súčasťou je aj databázový engine SQL Lite. Tento framework využívajú známe aplikácie ako YouTube, Instagram, Spotify, Dropbox a mnohé ďalšie.

Architektúra Model View Template

Architektúra MVT (Model View Template) frameworku Django je navrhnutá tak, aby oddelila logiku aplikácie od jej prezentácie, čo uľahčuje správu a údržbu kódu. Každá časť hrá v rámci systému špecifickú úlohu:

Model môžeme chápať ako interface na prístup k údajom a prácu s nimi. Django má implementovanú funkcionalitu ORM (Object-Relational Mapping). ORM umožňuje pracovať s databázou prostredníctvom objektov Python bez toho, aby ste museli písať dopyty SQL priamo. To znamená, že môžete vytvárať, čítať, aktualizovať a mazať záznamy v databáze pomocou jednoduchého kódu Python. V praxi to znamená, že modely korešpondujú s databázovými tabuľkami.

View je používateľské rozhranie na prezentáciu údajov. V prípade frameworku Django má na starosti renderovanie webových stránok a spracovanie používateľských požiadaviek. View funguje ako sprostredkovateľ medzi modelmi a šablónami (templates). Na základe požiadaviek používateľa načítava údaje z modelov a odovzdáva ich šablónam na zobrazenie.

Template je súbor, ktorý definuje, ako budú údaje prezentované používateľom. V Django frameworku sú šablóny písané v jazyku HTML a môžu obsahovať aj CSS a JavaScript. Šablóny využívajú špeciálny jazyk šablón Django, ktorý umožňuje dynamické vkladanie údajov do kódu HTML. Šablóny umožňujú dynamické generovanie stránok na základe údajov poskytovaných z View. Architektúra MVT umožňuje jasné oddelenie jednotlivých komponentov aplikácie, čo prispieva k lepšej organizácii kódu a jeho ľahšej údržbe.

Inštalácia frameworku Django

Na cvičné príklady potrebujete mať nainštalovaný Python a editor kódu, napríklad Visual Studio Code. Ak máte Python nainštalovaný, spustí sa, ak nie, ponúkne inštaláciu z aplikačného obchodu.

Na inštaláciu použijete príkaz v konzolovej aplikácii typu Príkazový riadok (cmd), PowerShell, prípadne v terminálovom okne vývojového prostredia Visual Studio Code.

pip install django

Vytvorenie projektu

Vo virtuálnom prostredí vytvoríme projekt. Projekt môžeme chápať ako rodičovský objekt pre aplikácie, ktoré v ňom vytvoríme.

django-admin startproject NÁZOV_PROJEKTU

napríklad

django-admin startproject dja_projekt1

Vytvorenie aplikácie

Najskôr vysvetlíme, aký je rozdiel medzi projektom a aplikáciou. Aplikácia, v tomto prípade webová, niečo robí – napríklad blog, e-shop, publikačný systém... Projekt je zbierka konfigurácií a aplikácií pre konkrétnu webovú lokalitu. Projekt môže obsahovať viacero aplikácií a aplikácia môže byť vo viacerých projektoch.

Prepneme sa do adresára projektu

cd dja_projekt1

V rámci projektu vytvoríme aplikáciu, napríklad s názvom app1:

python manage.py startapp app1

Adresár s novou aplikáciou bol vytvorený, ale Django o nej zatiaľ nevie. Preto v adresári projektu otvoríme súbor settings.py. Do zoznamu aplikácií INSTALLED_APPS pridáme našu aplikáciu čiže app1:

# Application definition

 

INSTALLED_APPS = [

  'django.contrib.admin',

  'django.contrib.auth',

  'django.contrib.contenttypes',

  'django.contrib.sessions',

  'django.contrib.messages',

  'django.contrib.staticfiles',

  'app1'

]

Po tejto úprave bude aplikácia zaradená do projektu.

Aby sme mohli pristupovať k webovej aplikácii cez prehliadač, potrebujeme webový server, ktorý je súčasťou frameworku Django. Spustíme ho príkazom:

python manage.py runserver

Aplikácia beží na našom lokálnom serveri implicitne na adrese http://localhost:8000/. Zadáme túto adresu do webového prehliadača. Zobrazí sa nám uvítacia stránka, ktorá potvrdí, že máte Django správne nainštalované a nakonfigurované.

 

Zobrazenie statických informácií

Potrebujeme dosiahnuť, aby sa po zadaní URL adresy zobrazil text, presnejšie povedané, aby sa spustila funkcia, ktorá zobrazuje text, alebo aby sa zobrazil obsah podľa šablóny, k čomu sa dostaneme neskôr. Najskôr si vytvoríme metódu, ktorá zobrazí nejaký text. Zobrazenie má na starosti modul View. V adresári aplikácie otvoríme súbor views.py. V ňom bude definícia používateľského rozhrania. V prvom príklade sa uspokojíme so zobrazením jednoduchého textu. Vytvoríme funkciu s názvom napríklad zobraz_text:

from django.http import HttpResponse

from django.shortcuts import render

 

# Create your views here.

def zobraz_text(request):

  return HttpResponse("Zobrazený text 1")

 

Na túto metódu sa napojíme prostredníctvom súboru urls.py, ktorý bol vytvorený v adresári projektu. Do zoznamu urlpatterns doplníme cestu k tejto funkcii. Parameter name="index" zabezpečí, že sa toto napojenie aktivuje po zadaní základnej URL adresy, v tomto prípade http://localhost:8000.

from django.contrib import admin

from django.urls import path

from app1 import views

 

urlpatterns = [

  path('admin/', admin.site.urls),

  path('', views.zobraz_text, name="index"),

]

 

Teraz môžete urobiť refresh stránky.

 

Šablóny

Šablóna (template) je súbor s kódom HTML, ktorý definuje, ako budú údaje prezentované používateľom. Šablóny môžu obsahovať aj CSS a JavaScript. Využívajú špeciálny jazyk šablón Django, ktorý umožňuje dynamické vkladanie údajov do kódu HTML.

V súbore views.py vytvorte metódu zobraz_sablonu:

def zobraz_sablonu(request):

  return render(request, "sablona.html")

 

Metódu pridáme do súboru urls.py v adresári aplikácie, pričom pôvodnú metódu dáme do komentára:

from django.urls import path

from . import views

 

urlpatterns = [

  # path('', views.zobraz_text, name="index"),

  path('help/', views.zobraz_napovedu, name="help"),

  path('', views.zobraz_sablonu, name="index"),

]

 

V adresári aplikácie vytvorte adresár templates a súbor sablona1.html. Zatiaľ bude v šablóne HTML len nadpis:

Šablóna 1

Po zadaní URL adresy sa zobrazí stránka HTML, zo šablóny zatiaľ len nadpis bez údajov.

 

Na ukážku prepojenia modelu s údajmi si vytvoríme jednoduché statické údaje:

def zobraz_sablonu(request):

  plemena_psov = [

  {

    "nazov": "Zlatý Retriever",

    "povod": "Škótsko",

    "velkost": "veľké",

  },

  {

    "nazov": "Bígl",

    "povod": "Anglicko",

    "velkost": "stredné",

  },

  {

    "nazov": "Čivava",

    "povod": "Mexiko",

    "velkost": "malé",

  }

  ]

 

  return render(request, "sablona.html", {"data1":plemena_psov})

 

Začneme vytvárať šablónu, v prvom kroku zobrazíme údaje v ich natívnej podobe:

 

 

  Plemená psov

    

  {{data1}}

V prehliadači sa údaje zobrazia takto:

 

V dvojitých zložených zátvorkách {{ }} sú v šablónach Django názvy premenných, napríklad:

My first name is {{ first_name }}. My last name is {{ last_name }}.

 

{% %} sú tagy, do ktorých umiestňujeme príkazové bloky, napríklad cykly, podmienky a podobne. Napríklad:

{% if user.is_authenticated %}Hello, {{ user.username }}.{% endif %}

Upravíme šablónu, aby sme údaje zobrazili v prehľadnejšej podobe.

 

 

  Plemená psov

    

 

Plemená psov

 

        {% for plemeno in data1 %}

         

  •         {{ plemeno.nazov }} ({{ plemeno.velkost }})

            pôvod: {{ plemeno.povod|default:"neznámy" }}

         

  •     {% endfor %}

     

 

V budúcom pokračovaní ukážeme zobrazenie dynamických údajov z databázy alebo vygenerovaných modelom AI.

 

Zobrazit Galériu

Ľuboslav Lacko

Všetky autorove články

Pridať komentár

Mohlo by vás zaujímať

Mohlo by vás zaujímať