You are on page 1of 40

UNIVERZITA J.

SELYEHO – SELYE JÁNOS EGYETEM


EKONOMICKÁ FAKULTA – GAZDASÁGTUDOMÁNYI KAR

VÝVOJ WEBU POMOCOU DJANGO FRAMEWORKU


WEBFEJLESZTÉS DJANGO KERETRENDSZER
HASZNÁLATÁVAL

BAKALÁRSKA PRÁCA - SZAKDOLGOZAT

Gábor Szabó
2019
UNIVERZITA J. SELYEHO – SELYE JÁNOS EGYETEM
EKONOMICKÁ FAKULTA – GAZDASÁGTUDOMÁNYI KAR

VÝVOJ WEBU POMOCOU DJANGO FRAMEWORKU


WEBFEJLESZTÉS DJANGO KERETRENDSZER
HASZNÁLATÁVAL

BAKALÁRSKA PRÁCA - SZAKDOLGOZAT

Študijný program: Aplikovaná informatika


Tanulmányi program: Alkalmazott informatika
Názov študijného odboru: Aplikovaná informatika
Tanulmányi szak megnevezése: Alkalmazott informatika
Školiteľ: PaedDr. Ladislav Végh, PhD
Témavezető: PaedDr. Ladislav Végh, PhD
Školacie pracovisko: Katedra matematiky a informatiky
Tanszék megnevezése: Matematika és Informatika Tanszék

Gábor Szabó
Komárno, 2019
Univerzita J. Selyeho
Ekonomická fakulta

ZADANIE ZÁVEREČNEJ PRÁCE

Meno a priezvisko študenta: Gábor Szabó


Študijný program: Aplikovaná informatika (Jednoodborové štúdium, bakalársky
I. st., denná forma)
Študijný odbor: 9.2.9. Aplikovaná informatika
Typ záverečnej práce: Bakalárska práca
Jazyk záverečnej práce: maďarský
Sekundárny jazyk: slovenský

Téma: Webfejlesztés Django keretrendszer használatával


Anotácia: A szerző feladata mindenekelőtt részletesen átnézni azokat a Python
keretrendszereket, melyek felhasználhatók webes alkalmazások létrehozására,
majd egy saját webalkalmazás elkészítése a Django keretrendszer
használatával, továbbá egy elektronikus segédanyag létrehozása. Az elméleti
részben a szerző röviden mutasson be és hasonlítson Össze legalább 6-8 olyan
Python keretrendszert, amely webalkalmazások fejlesztésére használhatók. A
gyakorlati rész két részből álljon: egy egyszerű webalkalmazás létrehozásából
és egy elektronikus segédanyag elkészítéséből. A webalkalmazás a Django
keretrendszer segítségével legyen megvalósítva, tartalmazzon többek között
adatbázist és felhasználók regisztrációját, ill. bejelentkezését is (a szerző
döntheti el, hogy konkrétan milyen alkalmazást fog létrehozni, lehet pl. fórum,
webes logikai játék). A szerző továbbá készítsen egy olyan elektronikus
segédanyagot (tutorial, PDF formátumban) a jövőbeli hallgatók számára,
amely részletesen bemutatja a webalkalmazás elkészítésének lépéseit.

Vedúci: PaedDr. Ladislav Végh, PhD.


Katedra: KMI – Katedra matematiky a informatiky
Vedúci katedry: doc. RNDr. Ferdinánd Filip, PhD.
Dátum zadania: 21.09.2018
Dátum schválenia: 25.09.2018 doc. RNDr. Ferdinánd Filip, PhD.
vedúci katedry
Köszönetnyilvánítás
Szeretnék köszönetet mondani PaedDr. Ladislav Végh, PhD. tanár úrnak, hogy
ötleteivel és tanácsaival segítette a munka elkészítését.
Továbbá szeretnék köszönetet mondani családomnak és barátaimnak, akik mellettem
álltak és támogattak egyetemi éveim során.
Abstrakt

Cieľom bakalárskej práce je predstaviť programovací jazyk Python a jeho framework,


presnejšie framework Django, pomocou ktorého sme pripravili jednoduchú webovú
aplikáciu. Rozhodli sme sa pre vytvorenie webového fóra, ktorá je užitočná a rozšírená
webová aplikácia. V prvej časti práce sme sa zaoberali programovacím jazykom Python,
a jeho populárnými webovými frameworkami, pričom sme sa ich snažili jednoduchou
formou predstaviť a opísať. Praktická časť práce obsahuje podrobný opis vytvoreného
webového fóra, ďalej predstavuje aké ďalšie možnosti ponúka programátorský jazyk Python
a framework Django. Cieľom je riešenie úlohy jednoduchou a prehľadnou formou pre
budúcich poslucháčov. Pre dosiahnutie nášho cieľa je nápomocná elektronická pomôcka
(tutorial), ktorá sa nachádza v prílohe, pričom táto pomôcka podrobne opisuje kroky potrebné
k vytvoreniu webového fóra.

Kľúčové slová: Python, Django, webový framework, tutoriál. webová aplikácia


Absztrakt

A szakdolgozat célja bemutatni a Python programozási nyelvet és keretrendszereit,


ezen belül főleg a Django-t, amely segítségével egy egyszerű webalkalmazást készítettünk.
Választásunk egy webfórum elkészítésére esett, amely hasznos és elterjedt webalkalmazás.
A munka első felében a Python programozási nyelvvel és a különböző, népszerű, Python
alapú webes keretrendszerekkel foglalkoztunk és törekedtünk egyszerű bemutatásukra,
jellemzésükre. A gyakorlati rész az elkészített fórum részletes leírását tartalmazza, továbbá
megmutatja, milyen lehetőségeket kínál a Python programozási nyelv és a Django webes
keretrendszer. Célunk a feladat egyszerű és áttekinthető megoldása, a jövőbeli hallgatók
segítése. E cél megvalósításában segítségünkre van a mellékelt elektronikus segédanyag
(tutorial), amely részletesen leírja a fórum elkészítésének lépéseit, képek és utasítások
formájában.

Kulcsszavak: Python, Django, webes keretrendszer, segédanyag, webalkalmazás


Abstract

The aim of this thesis is to introduce the Python programming language and its
frameworks, especially Django, with which we have created a simple web application. We
have chosen the web forum creation which is a useful and expanded web application. In the
first half of the work, we dealt with Python programming language and various popular
Python-based web frameworks and tried to present and characterize them. The practical part
contains a detailed description of the upcoming forum as well as the possibilities offered by
the Python programming language and the Django web framework. Our goal is to solve the
problem in a simple and transparent way to help future students. In order to achieve this goal,
we should help with the enclosed electronic guide (tutorial), which details the steps in
preparing the forum in the form of pictures and instructions.

Keywords: Python, Django, web framework, tutorial, web application


Tartalomjegyzék
Bevezetés ......................................................................................................................... 11
1. A Python programozási nyelv és keretrendszerei ................................................... 12
1.1. Python ................................................................................................................ 12
1.2. Python alapú keretrendszerek összehasonlítása ................................................... 13
1.2.1. Django ............................................................................................................ 13
1.2.2. Pyramid .......................................................................................................... 14
1.2.3. TurboGears ..................................................................................................... 14
1.2.4. Web2py .......................................................................................................... 15
1.2.5. Flask ............................................................................................................... 15
1.2.6. CherryPy ........................................................................................................ 16
1.2.7. Tornado .......................................................................................................... 17
1.2.8. CubicWeb....................................................................................................... 17
2. Felhasznált technológiák ........................................................................................ 18
2.1. HTML ................................................................................................................ 18
2.2. CSS .................................................................................................................... 19
2.3. MySQL .............................................................................................................. 20
2.4. Notepad++ ......................................................................................................... 20
2.5. Anaconda ........................................................................................................... 20
3. Webfórum készítése Django keretrendszerrel......................................................... 21
3.1. A webfórum felépítése ....................................................................................... 21
3.1.1. Virtuális környezet ......................................................................................... 21
3.1.2. Django project ................................................................................................ 22
3.1.2.1. Manage.py .................................................................................................. 22
3.1.2.2. Settings.py .................................................................................................. 22
3.1.2.3. Urls.py ........................................................................................................ 22
3.1.2.4. Wsgi.py....................................................................................................... 23
3.1.3. Applikációk .................................................................................................... 23
3.1.3.1. Admin.py .................................................................................................... 23
3.1.3.2. Apps.py....................................................................................................... 23
3.1.3.3. Forms.py ..................................................................................................... 24
3.1.3.4. Models.py ................................................................................................... 25
3.1.3.5. Tests.py....................................................................................................... 26
3.1.3.6. Views.py ..................................................................................................... 26
3.1.3.7. Sablonok ..................................................................................................... 27
3.2. Az adatbázis felépítése ....................................................................................... 27
3.2.1. Migrációk ....................................................................................................... 28
4. A készített webfórum bemutatása .......................................................................... 30
4.1. A webfórum funkciói ......................................................................................... 30
4.1.1. Regisztráció és bejelentkezés .......................................................................... 30
4.1.2. Menü .............................................................................................................. 30
4.2. Hibák ................................................................................................................. 31
4.3. Az elkészült webfórum kinézete ......................................................................... 32
Befejezés .......................................................................................................................... 33
Resumé ............................................................................................................................ 34
Felhasznált irodalom ........................................................................................................ 37
Mellékletek ...................................................................................................................... 39
Felhasznált rövidítések jegyzéke

Amazon EC2 – Amazon Elastic Compute Cloud

API – Application Programming Interface

APP – Application

BSD – Berkeley Software Distribution

CSS – Cascading Style Sheets

GUI – Graphical User Interface

HTML – Hypertext Markup Language

HTTP – Hypertext Transfer Protocol

JSON – JavaScript Object Notation

MVC – Model View Controller

ORM – Object-relational mapper

OS – Operating System

OWL – Web Ontology Language

PHP – Hypertext Preprocessor

RDF – Resource Description Framework

RQL – Relational Query Language

SQL – Structured Query Language

STL – Standard Template Library

UI – User Interface

URL – Uniform Resource Locator

WSGI – Web Server Gateway Interface

XML – Extensible Markup Language


Bevezetés

Napjainkban az internet az életünk elengedhetetlen részévé vált. Szinte bárhonnan


elérhető. Használjuk szabadidőnkben, munka és tanulás közben is. Információt, szórakozást,
kapcsolattartási és ügyintézési lehetőséget biztosít.
Manapság az első számú kommunikációs módot a különböző chat programok és
fórumok teszik lehetővé. A chat programok különböző magán, illetve konferencia
beszélgetéseket biztosítanak kettő vagy több fél között, míg a fórumokon nagyobb
közönséggel oszthatjuk meg gondolatainkat vagy tehetjük fel kérdéseinket. A mai rohanó
világban ez egy nagyon hasznos módszer az információszerzésre, hisz gyorsabban, szinte
keresés nélkül kaphatunk választ kérdéseinkre. Rengeteg különböző témára szakosodott
fórum létezik, amelyeken a felhasználó könnyen kérhet segítséget vagy nyújthat azt mások
számára.
Választásom azért esett egy webfórum elkészítésére, mert szabadidőmben szívesen
olvasok különböző témájú fórumokat, ahol kérdéseket teszek fel, illetve hozzászólok más
emberek gondolataihoz. Szeretném látni, hogy épül fel egy ilyen alkalmazás, és megtanulni
elkészítésének módját.
Munkánk célja egy egyszerű, könnyen áttekinthető webfórum létrehozása a Python
programozási nyelv és keretrendszere, a Django segítségével, továbbá továbbadni az
elsajátított tudást, segítve ezzel a jövőbeli hallgatókat. Ebben segítségünkre van az oktató
jellegű elektronikus segédanyag, amelyben részletesen, lépésről lépésre ismertetjük a
webfórum elkészítésének műveletét.
A szakdolgozat 4 fő részből áll. Az első fejezetben a Python programozási nyelv és
legismertebb keretrendszerei kerülnek bemutatásra és összehasonlításra, jellemzőik által. A
második fejezet bemutatja a webfórum készítése során felhasznált alkalmazásokat, illetve
programozási nyelveket. A harmadik fejezetben részletesen elemezzük a webfórum
felépítését és működését. A negyedik fejezetben a már elkészült webfórum funkcióit és
készítése során fellépő hibákat írjuk le.

11
1. A Python programozási nyelv és keretrendszerei

Ebben a fejezetben a Python programozási nyelv, valamint legnépszerűbb


keretrendszerei kerülnek bemutatásra és összehasonlításra, jellemzőik által.

1.1. Python

A Python egy könnyen értelmezhető, objektum orientált, magas szintű program


nyelv, dinamikus szemantikával. Egyszerű és könnyen tanulható szintaxisa jól olvashatóvá
teszi, ez nagyban leegyszerűsíti a program karbantartását. Támogatja a modulokat, ezzel
elősegítve a program hajlékonyságát. Mivel a nyelv nem igényel fordítást, ezért a
szerkesztés-teszt-debuggolás ciklus nagyon gyors. A hibakaresés is egyszerű: egy hiba (vagy
rossz input) sose okoz szegmentálási hibát. Ehelyett, mikor az interpreter hibát észlel, egy
hibaüzenetet (exception) vet fel. Gyakran a legegyszerűbb módja a debuggolásnak, ha
hozzáadunk pár kiírás (print) parancsot a forráskódhoz (What is Phyton?, 2019; Swinnen,
2005).

Jellemzői:

 Folyamatosan fejlődő nyelv


 Portábilis (különböző Windows, Unix változatokra és MacOS-re is)
 Nincsenek pointerek
 Szintaxisa nagyon egyszerű
 Ingyenes
 Többszálú (multi-thread)
 Objektum orientált
 Jpython – Java bytekódot hoz létre
 Két implementációja van: interpretált (a programok portábilis utasításokra vannak
lefordítva), a másik pedig közvetlenül Java bytekódot generál
 Bővíthető
 A Python XML kezelésére alkalmas nyelv

12
1.2. Python alapú keretrendszerek összehasonlítása

1.2.1. Django

A Django egy nyílt forráskódú, magas szintű Python alapú keretrendszer, mely gyors
és egyszerű webfejlesztést tesz lehetővé. Néhány amerikai cég weboldalainak kiszolgálása
céljából hozták létre. A Django tehát egy Python programozási nyelven írt „eszköztár”,
amely segítségével weboldalakat készíthetünk Python nyelven – felhasználva a keretrendszer
által nyújtott eszközöket, szolgáltatásokat. Elsődleges célja, hogy megkönnyítse
bonyolultabb, adatbázis alapú weboldalak készítését.

Jellemzői:

 Felhasználó hitelesítő - felhasználói fiókokat, csoportokat és engedélyeket kezel


 URL diszpécser – lehetővé teszi az URL nézet tervezését, minden szerkezeti
korlátozás nélkül
 Saját sablonrendszerrel rendelkezik HTML, XML és más kiviteli formátumok
generálására
 ORM – egy kódkönyvtár, amely automatizálja a relációs adatbázis-táblákban tárolt
adatok átvitelét az alkalmazáskódban gyakran használt objektumokba
 Képes automatikusan létrehozni az adatok tárolásához szükséges adatbázis-sémát
 Nincs szükség bonyolult SQL lekérdezések megírására

A Django az ORM-et használja az objektumok adatbázisban való megjelenítéséhez.


Ugyanaz a kód egyformán működik különböző adatbázisokkal. A Django főleg a
PostgreSQL, MySQL, SQLite és az Oracle adatbázisokat használja.
A keretrendszer a felépített modellekhez automatikusan készített, bizonyos mértékig
testreszabható adminisztrációs felületet biztosít, mely lehetővé teszi az objektumok
hozzáadását, megváltoztatását és törlését a felhasználó számára. Ennek köszönhetően egy
szép, jól áttekinthető adminisztrátor felületet kapunk, már a fejlesztés korai szakaszában. Más
keretrendszerek ilyen funkcionalitású és egyszerűen kezelhető felületet nem kínálnak
(SteelKiwi Inc., 2018; Guardia, 2016; Django, 2018).

13
1.2.2. Pyramid

A Pyramid egy nyílt forráskódú, Python alapú webes keretrendszer. Fő feladata: a


lehető legtöbbet csinálni, minimális erőfeszítéssel. Legjobb tulajdonsága, hogy ugyanolyan
jól dolgozik a kisebb alkalmazásokkal, mint a nagyobbakkal.
A Pyramid célja az egyszerűség, hogy kezelése azoknak se okozzon nehézséget, akik
nem értenek hozzá. Minimalista, csak az alapvető eszközöket szolgáltatja szinte az összes
webalkalmazáshoz (SteelKiwi Inc., 2018; Pyramid Introduction, 2019).

Jellemzői:

 URL generálás
 Single-file aplikációk
 Gyors
 Bővíthető konfiguráció („add-on”-ok telepítése)
 Mindenre kiterjedő sablon és eszköz specifikáció
 Rugalmas hitelesítés és engedélyezés
 Aktív tesztelés, support és átfogó adat dokumentáció
 Funkció dekorátorok

1.2.3. TurboGears

A TurboGear egy nyílt forráskódú, adatvezérelt, magas szintű, Python alapú webes
keretrendszer. Adatvezérelt, bővíthető webalkalmazások gyors fejlesztését teszi lehetővé.
Rugalmas ORM-el és felhasználóbarát sablonokkal rendelkezik. A TurboGears-el gyorsan
és egyszerűen létrehozhatók adatbázist igénylő alkalmazások (SteelKiwi Inc., 2018).

14
Jellemzői:

 Több adatbázist támogat


 MVC stílusú felépítés – átláthatóbb és egyszerűbb kezelhetőség
 SQLObject és SQLAlchemy támogatása
 Kid és a Genshi is beletartozik a támogatott sablonnyelvekbe
 FormEncode-al történő hitelesítés – a hitelesítés összetett adatszerkezettel dolgozik,
amelyek részei egymásba illeszthetők
 Webszerverként a Pylons-t használja

1.2.4. Web2py

A Web2py egy skálázható, nyílt forráskódú, Python alapú webes keretrendszer, habár
a Python 3 programnyelvet nem támogatja. Dinamikus webtartalom létrehozását teszi
lehetővé a felhasználó számára. Saját web-alapú integrált fejlesztői környezete van, amely
többet között magába foglal egy kód szerkesztőt, debuggert és egy azonnali telepítőt. Ezek
lehetővé teszik a kódok fejlesztését és debuggolását, továbbá az alkalmazások tesztelését és
karbantartását (SteelKiwi Inc., 2018).

Jellemzői:

 Nincs szükség telepítésre vagy konfigurációra


 Windows, Linux/Unix, Google App Engine és Amazon EC2-n is futtatható
 Kód könnyű olvashatósága és kezelése
 Beépített komponensek a HTTP kérések és válaszok, valamint coockie-k kezelésére

1.2.5. Flask

A Flask egy Python alapú webes keretrendszer. Nem nyílt forráskódú, a BSD
licenciója alatt áll. A Flask unicode-alapú és támogatja a Jinja2 sablon motort, ami az egyik
legnépszerűbb sablon a Python webalkalmazások számára. A Flask fő feladata, hogy segítsen
egy stabil webalkalmazás-alap létrehozásában. Ezután bármilyen bővítmény használható,

15
amire szükségünk van. A Flask egyszerű modellezése lehetővé teszi, hogy könnyen
alkalmazkodjon a fejlesztő igényeihez (SteelKiwi Inc., 2018; Guardia, 2016).

Jellemzői:

 Beépített fejlesztő szerver és gyors debugger


 Integrált egységteszt
 Biztonságos coockie támogatás
 Unicode alapú
 Bármilyen ORM beszúrható
 HTTP kérések kezelése

1.2.6. CherryPy

A CherryPy egy nyílt forráskódú, minimalista webes keretrendszer. A Python alapú


webalkalmazások létrehozását olyanná teszi, mint bármilyen másik objektum orientált
program létrehozása. A CherryPy-ban létrehozott webalkalmazások egyedülálló Python
applikációk, amelyek beágyazzák saját, többszálas webszerverüket. A megírt applikációk
bármilyen operációs rendszeren lefutnak, ami támogatja a Pythont. Az alkalmazások
futtatásához nincs szükség Apache webszerverre. A CherryPy részletes konfigurációs
rendszerrel rendelkezik, amely lehetővé teszi, hogy számos konfigurációs beállítás
módosítható legyen. A teljes konfiguráció elkülönül az alkalmazások konfigurálásától, így
lehetséges, hogy több alkalmazás futhat egy folyamatban a saját beállításaival (SteelKiwi
Inc., 2018; Guardia, 2016).

Jellemzői:

 Könnyedén futtat több HTTP szervert egy időben


 Erős konfigurációs rendszer
 Rugalmas plug-in rendszer
 Beépített támogatás teszteléshez
 A Python 2.7+, Python 3.1+, PyPy, Jython és Android futtatására is képes

16
1.2.7. Tornado

A Tornado egy Python alapú webes keretrendszer és aszinkron hálózati könyvtár. Ha


megfelelően van konfigurálva, egy időben több, mint 10,000 kapcsolatot képes kezelni,
alkalmassá téve nagy teljesítményt igénylő alkalmazások létrehozására. A többi webes
keretrendszer jellemző mellett, a Tornado könyvtárakkal és segédprogramokkal rendelkezik,
hogy az aszinkron programozást egyszerűbbé tegye. Tornado coroutine-ok segítségével
hasonló módon írhatjuk a programot, mint a szinkron kódot, ahelyett, hogy függvény
visszahívásoktól függenénk. A Tornado egy egyszerű sablonnyelvet foglal magába. Ezen
kívül rendelkezik úgynevezett UI modulokkal, amelyek az UI widgetek megjelenítésére
szolgáló speciális funkciók. Ezek tartalmazhatják a saját CSS-jüket és JavaScript-jüket
(SteelKiwi Inc., 2018; Guardia, 2016).

Jellemzői:

 Beépített támogatás a felhasználók azonosítására


 Valós idejű kiszolgálás
 Magas teljesítmény
 Fordítások és helymeghatározás támogatása
 Python alapú websablon-nyelv
 Saját, az aszinkron könyvtáron alapuló HTTP szerver

1.2.8. CubicWeb

A Logilab által kifejlesztett CubicWeb egy nyílt forráskódú, sematikus és ingyenes


Python webes keretrendszer. Fontos az adatszerkezet, szükséges pontosan definiálnunk
ahhoz, hogy egy működő alkalmazást kapjunk. Más népszerű keretrendszerekkel ellentétben
a CubicWeb nem különálló modelleket, hanem kockákat használ. Több kocka egyesítve hoz
létre egy hivatkozást. Egy adatbázis, egy webszerver és pár konfigurációs fájl segítségével
(Arora, 2018).

17
Jellemzői:

 OWL és RDF támogatás


 Újrahasználható komponensek
 Leegyszerűsíti az adatokkal kapcsolatos lekérdezéseket az RQL beágyazásával
 Több adatbázist is támogat
 Biztonsági munkafolyamatok

2. Felhasznált technológiák

Ebben a fejezetben a webfórum elkészítése során felhasznált technológiák kerülnek


bemutatásra. Munkánk a Python programozási nyelv és a Django keretrendszer segítségével
készült, amelyeket az 1.1 és az 1.2.1-es fejezetben részletesen ismertettünk. Továbbá
segítségünkre volt a HTML leíró nyelv, a CSS stílusleíró nyelv, a MySQL adatbázis-kezelő
rendszer, az Anaconda disztribúció és a Notepad++ szöveg- és forráskódszerkesztő.

2.1. HTML

A weblap egy egyszerű szöveges fájl amelyet, Hypertext Markup Language (HTML)
használatával kódolnak úgy, hogy az áttekinthetően, formázottan jelenjen meg a
webböngészőben.

A HTML jelentése:

 Hypertext – szöveg, amely rákattintva dokumentumról dokumentumra ugrik


 Markup – címkék, amelyek formázási és elrendezési konvenciókat alkalmaznak az
egyszerű szövegre
 Language – utalás arra, hogy a HTML programozási nyelvnek tekinthető

A HTML fájl kódja címkék által körülvett szöveg. A címkék meghatározzák, hogy az
adott formázás hol legyen alkalmazva, a szöveg elrendezését, egy kép hol helyezkedjen
el, satöbbi. A formázott weboldal túl nagyméretű az interneten történő küldéshez, ezért a
webfejlesztők kifejlesztettek egy applikációt (a webböngészőt), amely formázási
utasításként értelmezi a szöveges kódot (HTML-címkéket).

18
A HTML-el hiperszöveg is létrehozható. Mikor a weboldal látogatója rákattint egy
hiperszövegre, a webböngésző betölti a hivatkozott oldalt, vagy egy megjelölt részre
ugrik az adott oldalon belül (Wempen, 2011).

2.2. CSS

A CSS (Cascading Style Sheets) egy egyszerű stílusleíró nyelv, amely célja a
weblapok megjelenítésének leegyszerűsítése.
A CSS felel a weboldal kinézetéért. Használatával megszabhatjuk a szöveg színét, a
betűk stílusát, a bekezdések közti teret, az oszlopok méretét és elhelyezkedését, milyen
háttérkép vagy szín kerül felhasználásra, és még sok más effektet.
A CSS könnyen tanulható nyelv, mégis nagy hatással van egy HTML dokumentum
megjelenésére. Önálló nyelvként nem használható, leggyakrabban a HTML dokumentummal
összefűzve kerül használatra (Tutorials Point (I) Pvt. Ltd., 2017).

Előnyei:

 Időt spórol – Elég egyszer megírni, ugyanaz a lap több HTML oldalhoz is
felhasználható.
 Gyors betöltés – A HTML-el ellentétben nem kell címke attribútumokat írni minden
alkalommal. Elég, ha definiálunk egy CSS szabályt egy címkére, és ezt minden
alaklommal felhasználjuk. A kevesebb kód gyorsabb töltési időt eredményez.
 Könnyű karbantartás – Globális változáshoz elég módosítani a stílust, és az összes
weboldal összes eleme automatikusan frissül.
 Kiváló HTML stílusok – Sokkal szélesebb körű attribútumokkal rendelkezik, mint
a HTML, így segítségével jobb kinézet érhető el
 Több eszközzel kompatibilis
 Globális webes szabványok

19
2.3. MySQL

A MySQL egy Oracle által támogatott nyílt forráskódú, SQL-alapú (Structured Query
Language) relációs adatbázis-kezelő rendszer. Gyakorlatilag minden platformon fut, köztük
Linuxon, Windowson és Unixon is. Bár számos alkalmazásban használható, a MySQL
leggyakrabban webes alkalmazásokhoz kapcsolódik.
A MySQL fontos része a LAMP (Linux-Apache-MySQL-PHP) összeállításnak. A
LAMP egy webfejlesztési platform, amely Linux operációs rendszeren fut, webszerverként
az Apache-ot, relációs adatbázis-kezelő rendszerként a MySQL-t, objektumorientált
szkriptnyelvként pedig a PHP-t használja. Néha a PHP-t a Perl vagy a Python helyettesíti.
A MySQL a kliens-szerver modellen alapszik. A MySQL magja a MySQL szerver,
amely az utasításokat és a parancsokat kezeli. A parancsok a MySQL kliensen keresztül
érkeznek.
A MySQL eredetileg nagyméretű adatbázisok gyors kezelésére lett kifejlesztve.
Általában csak egy eszközre van feltelepítve. Így is képes az adatbázist több helyre eljuttatni,
mivel a felhasználók könnyen elérhetik különböző MySQL klienseken keresztül (Rouse,
2018).

2.4. Notepad++

A Notepad++ egy ingyenes forráskód-szerkesztő és jegyzettömb helyettesítő, amely


több nyelvet támogat és MS Windows környezetben fut.
A Scintilla szövegszerkesztő komponensen alapulva, a Notepad++ C++
programozási nyelven van írva. Tiszta Win32 API-t és STL-t használ, amely nagyobb
végrehajtási sebességet és kisebb programméretet biztosít (About Notepad++, 2019).

2.5. Anaconda

Az Anaconda a Python és az R programozási nyelvek ingyenes, nyílt forráskódú


disztribúciója. Célja a csomagkezelés egyszerűsítése és a csomagok telepítése. A csomagokat
a Conda csomagkezelő rendszer kezeli.
Az Anaconda magába foglalja a Conda csomag és virtuális környezetkezelőt, több,
mint 1500 csomaggal együtt, valamint egy grafikus felhasználói felületet (GUI), az
Anaconda Navigatort.

20
A legnagyobb különbség a Conda és a pip (a Python alapértelmezett csomagkezelője)
csomagkezelő között a csomagfüggőségek kezelése, amely jelentős kihívást jelent a Python
adattudomány számára. Ez az oka a Conda kifejlesztésének. A pip az összes szükséges
Python csomagfüggőséget telepíti, függetlenül attól, hogy azok ütköznek-e más, korábban
telepített programokkal. Ez a csomagok nem megfelelő működéséhez vagy leállásához
vezethet. A Conda elemzi az éppen aktuális környezetet, minden telepített csomagot, a
megadott verziókorlátozásokat, és kiszámolja, hogyan telepítheti a kompatibilis
függőségeket vagy jelzi, hogy a kívánt művelet nem végrehajtható. A pip ezzel ellentétben
mindent feltelepít, amit a felhasználó kíván, még akkor is, ha az bizonyos csomagok
leállásához vezet (Anaconda (Python distribution), 2019; Reitz-Schlusser, 2016).

3. Webfórum készítése Django keretrendszerrel

A webfórum elkészítéséhez a Python 3.7.3-as, a Django 2.2.1-es, és a MySQL 8.0.16-


os verzióját használtuk. A webalkalmazás célja egy minimalista fórum létrehozása, amely
felhasználható más alkalmazásokban és tetszőlegesen testreszabható.

3.1. A webfórum felépítése

Ebben a fejezetben ismertetjük, hogy a webfórum milyen részekből és fájlokból épül


fel, azok tartalmát és célját, valamint az adott műveletek elvégzéséhez szükséges
parancsokat.

3.1.1. Virtuális környezet

A virtuális környezet segítségével a programozó egy önálló fejlesztési környezetet


(sanbox) hozhat létre. Célja, hogy megakadályozza, hogy a könyvtárak és csomagok
különböző verziói kommunikálhassanak egymással, amely akadályozhatja az webapplikáció
megfelelő működését.
A virtuális környezet egy teljesen elszigetelt hely, ahol a programozó tetszés szerint
használhat bármilyen Python és Django, illetve csomag verziót, anélkül, hogy az bármilyen
hatással lenne más környezetre.
Új virtuális környezetet a programozó az Anaconda parancssorán keresztül a conda
create –name Környezet-neve paranccsal hozhat létre, majd a conda activate Környezet-neve
paranccsal aktiválhatja azt. Ezen belül a programozó biztonságosan létrehozhatja projectjét.

21
3.1.2. Django project

A Django project egy adott webhely konfigurációinak és applikációinak


gyűjteménye. Egy project több applikációt is tartalmazhat.
Új project létrehozásához a django-admin startproject Project-neve parancsot adjuk
meg. Ez létrehoz egy könyvtárat, amelyben a Django automatikusan kigenerálja az alapvető
fájlokat, amelyek a következők: manage.py; a project alap könyvtára, amely a settings.py,
urls.py és a wsgi.py fájlokat tartalmazza.

3.1.2.1. Manage.py

A manage.py egy új project létrehozása folyamán automatikusan létrehozott fájl.


Segítségével különböző műveleteket hajthatunk végre (például az alkalmazás indítása,
migrációk létrehozása, migráció, új applikáció generálása, adminisztrátor adatainak
megadása) a python manage.py runserver, makemigrations, migrate, startapp,
createsuperuser parancs segítségével. Ezen kívül beállítja a
DJANGO_SETTINGS_MODULE-t úgy, hogy az a settings.py fájlra mutasson.

3.1.2.2. Settings.py

A settings.py egy automatikusan létrehozott fájl a project alap könyvtárában.


Különböző beállításokat és adatokat tárol a Django számára. Például az engedélyezett host-
ok IP-címét és nevét, titkos kulcsot, debug módot, sablonokat, a wsgi.py fájl elérési útját, az
adatbázis elérésének módját és a létrehozott applikációkat. A későbbiekben létrehozott
applikációkat az urls.py fájl segítségével érjük el az alap könyvtárból.

3.1.2.3. Urls.py

Az urls.py fájlt a Django szintén automatikusan hozza létre a project alap


könyvtárában.
Az URL egy webcím, amelyre az interneten minden oldalnak szüksége van.
Segítségével az applikáció tudja, hogy mit kell mutatnia a felhasználónak, aki megnyitja az
adott URL-t. Az alap könyvtárban található URL-ek mutathatnak az adminisztrációs felületre
és a programozó által létrehozott applikációkra. A készített applikációk könyvtárában
létrehozott urls.py fájl pedig a könyvtáron belül található views.py fájlra mutat.

22
3.1.2.4. Wsgi.py

A WSGI (Web Server Gateway Interface) a webszerver átjáró interfésze, amely leírja,
hogy egy webszerver hogyan kommunikál a webalkalmazásokkal, és hogyan lehet a
webalkalmazásokat összekapcsolni egy kérés feldolgozására.
A Django elsődleges telepítési platformja a WSGI, egy Python szabvány
webszerverek és alkalmazások számára.

3.1.3. Applikációk

Az applikáció egy olyan webalkalmazás, amely különböző műveleteket végezhet.


Például lehet egy egyszerű lekérdezési alkalmazás vagy egy nyilvántartási adatbázis.
Új applikációt a programozó a python manage.py startapp Applikáció-neve
paranccsal hozhat létre. Ez létrehoz egy mappát a project könyvtárán belül, amely a
következő automatikusan generált fájlokat tartalmazza: admin.py, apps.py, models.py,
test.py, views.py. Az urls.py fájlt a programozó maga hozza létre, amely az applikáció
könyvtárán belül található views.py fájlra mutat, így a webalkalmazás tudja, hogy mit
jelenítsen meg az adott URL felhasználásával.
A programozó által létrehozott összes applikációt definiálni kell az alap könyvtár
settings.py fájljában, az INSTALLED_APPS cím alatt, így a webalkalmazás tudja, miként
kezelje a könyvtárakat.

3.1.3.1. Admin.py

Az admin.py fájlban a programozó megadhatja, hogy az alap adminisztrátor funkciók


mellett, milyen további funkciók legyenek elérhetőek az általa létrehozott applikációból az
adminisztrációs felületen.
Az adminisztrátor adatait a python manage.py createsuperuser paranccsal adhatjuk
meg, majd az adatbázisban kerül tárolásra.

3.1.3.2. Apps.py

Az apps.py az applikáció létrehozása során, automatikusan generált fájl. Az


applikáció nevét tartalmazza.

23
3.1.3.3. Forms.py

A HTML-ben az űrlap (form) elemek gyűjteménye, a <form>…</form> elemben,


amely különböző műveleteket tesz lehetővé a felhasználó számára. Például szöveg írása,
opciók választása, objektumok vagy vezérlők kezelése.
Az űrlapok esetében két metódusról beszélhetünk: a POST-ról és a GET-ről. A
Django a bejelentkezési űrlapot a POST metódus által adja vissza, amely során a
webböngésző összekapcsolja az űrlapban bevitt adatokat, kódolja őket az átvitelre, elküldi
őket a szervernek és végül fogadja a szerver válaszát. Ezzel ellentétben a GET metódus a
bevitt adatokat egy karakterláncként fűzi össze, és egy URL létrehozására használja fel. Az
URL egy címet (amely meghatározza hova kell küldeni az adatot), valamint adatkulcsokat és
értékeket tartalmaz (Working with forms, 2019).
A forms.py fájl nem jön létre automatikusan az applikáció létrehozásánál. Ha a
programozónak szüksége van űrlapokra, a fájlt ő maga hozza létre. A forms.py Form class-
okat tartalmaz. Ugyanúgy, mint ahogy a Django modell leírja egy objektum logikai
felépítését, a Form class egy űrlapot ír le, és meghatározza, hogyan működjön és jelenjen
meg.
Ezt egy példán keresztül szemléltetjük:

class PostForm(forms.ModelForm):

class Meta:
model = Post
fields = ('title', 'description',)

A forms.py fájlban létrehozott PostForm class esetében a következő tulajdonságok


lettek megadva:
„Meta class” – különböző adatokat (metadata) tartalmaz a modellekkel kapcsolatban.
Definiálja például, hogy milyen jogosultságok állnak a felhasználó rendelkezésére, a
kapcsolódó adatbázis-tábla nevét satöbbi.
„model” (modell) – meghatározza, hogy az adattábla melyik oszlopát szeretnénk
elérni.
„fields” (mező) – űrlapmezőt generál minden egyes attribútumnak, a megadott
sorrendben.

24
3.1.3.4. Models.py

Közvetlenül az MySQL adatbázisban dolgozni bonyolult lehet, ezért a Django


segítségünkre van a saját ORM-jével (Objet-Relational Mapper). A MySQL-ben lévő
táblázatok definiálása helyett Django modelleket írunk.
A modellek segítségével tervezhető meg az adatbázis felépítése. A tárolt adat alapvető
mezőit és viselkedését tárolják. Általában minden egyes modell egy táblázatot ír le, hogy az
adatbázis milyen módon kezelje.
Mikor a models.py fájlon belül létrehozunk egy új class-t (modellt), minden egyes
létrehozott sorban meg kell adnunk, hogy milyen módon szándékozunk tárolni az adatot, az
adattábla oszlopában. Ezek lehetnek például CharField, TextField, IntegerField satöbbi.
Ezt egy példán keresztül is szeretnénk szemléltetni:

class Post(models.Model):
author = models.ForeignKey(User, on_delete=models.CASCADE)
title = models.CharField(max_length=100)
description = models.TextField()
published_date = models.DateTimeField(default=timezone.now)
updated = models.DateTimeField(blank=True, null=True)
views = models.IntegerField(default=0)

A models.py fájlban létrehozott Post class esetében a következő tulajdonságok lettek


megadva:
„author” (szerző) – a ForeignKey (külső kulcs) attribútumot kapta. Ez azt jelenti,
hogy ez az oszlop csak egy, az adatbázisban szereplő, másik tábla bizonyos oszlopának
értékeit veheti fel (esetünkben ez a User oszlop).
„title” (cím) – az adott poszt címét tárolja, ezért a CharField (karakter mező)
attribútumot kapta, amely szöveget tárol. A tárolandó szöveg maximális hossza megadható
a max_length segítségével.
„description” (leírás) – a felhasználó által bevitt, posztolni kívánt szöveget tárolja.
Ezért a TextField (szöveg mező) attribútumot kapta, amely egy konkrét méretű szöveget
képes tárolni.
„published_date” (publikálás dátuma) és „updated” (frissítve) – mindketten a
DateTimeField (dátum és idő mező) attribútumot kapták, amely a dátumot és az időt rögzíti.
„views” (megtekintések) – az IntegerField (egész szám mező) attribútumot kapta,
amely a poszt megtekintéseinek számát tárolja.

25
Az updated és a views nem került használatra a webfórum elkészítése során. Az
egyszerűbb testreszabhatóság kedvéért maradt az adatbázisban.

3.1.3.5. Tests.py

A tests.py fájl az applikáció tesztelésére alkalmas kódokat tartalmazhat.


Alapértelmezett állapotban ez a fájl üres.
A webfórum elkészítése során ezt a fájlt nem szerkesztettük.

3.1.3.6. Views.py

Ahhoz, hogy a sablonok megkapják a szükséges adatokat az adatbázisból, szükségünk


van a view funkcióra.
A views.py fájlban található a webalkalmazás logikai része. A view egy Python
funkció, amely egy kérést hajt végre, majd egy választ ad vissza. Esetünkben a modellektől
kér adatokat, és továbbítja azt egy sablonnak. A views.py definiálja az összes, ehhez
szükséges funkciót.
A views.py fájl def kulcsszavakkal ellátott funkciókat tartalmaz, amelyek segítségével
definiálni tudunk egy funkciót. Ez a view funkció. Minden view funkció paraméterként egy
HttpRequest objektumot kap, amelyet request-nek (kérés) nevezünk.

def post_new(request):
if request.method == "POST":
form = PostForm(request.POST)
if form.is_valid():
post = form.save(commit=False)
post.author = request.user
post.published_date = timezone.now()
post.save()
return redirect('post_detail', pk=post.pk)
else:
form = PostForm()
return render(request, 'home/post_edit.html', {'form': form})

A views.py fájlban megadott def post_new alatt a post_new view funkció lett
definiálva:
„if request.method == "POST"” – a feltétel megszabja, hogy ha a lekérési metódus
POST, az űrlap paramétereit a PostForm-ból kérje le („form = PostForm“), amelyet már
korábban megírtunk a forms.py fájlban.

26
„if form.is_valid” – a feltétel egy logikai értéket ad vissza, amely az adott űrlap
mezőinek tartalmától függ. Ha akár egy is üres a kapott érték hamis. A feltétel csak akkor
teljesül, ha az űrlap minden input mezőjében szerepel adat, mely esetben a következő
műveletek történnek:
„post = form.save” – a parancs segítségével az űrlap mezőibe beírt adatok
mentésre kerülnek az adattáblában.
„post.author = request.user” – a parancs lekéri a szerző nevét az adattábla
user oszlopából.
„post.published_date = timezone.now” – a parancs lekéri a publikáció idejét,
amely a settings.py fájlban megadott időzóna alapján, az aktuális dátumod és időt adja
eredményül.
„post.save” – a parancs segítségével mentjük a poszt adatait.
„return redirect” – a műveletek végrehajtása után, ez a parancs adja meg,
hogy a webalkalmazás milyen URL-re vagy sablonra térjen vissza.
„else” – ha az adott metódus nem POST, hanem GET, egy üres űrlapot kapunk, amely
a paramétereit a PostForm-tól („form = PostForm”) és a „return render” által
meghatározott sablontól kapja.

3.1.3.7. Sablonok

A sablon (template) egy egyszerű szöveges fájl, amely bármilyen szöveg-alapú leíró
nyelv kódját tartalmazhatja (HTML CSV, XML stb.). A sablon fájlok változókat (amelyek
az adattáblából kapnak értéket a meghatározott útvonal alapján), továbbá címkéket
tartalmaznak. A címkékkel különböző változtatásokat végezhetünk az adott oldal kinézetén,
mint például az oldal neve, cím, gombok beszúrása, betűméret és stílus, különböző ikonok
és CSS fájl csatolása.

3.2. Az adatbázis felépítése

A legtöbb webalkalmazásnak szüksége van adatbázisra, hogy az alkalmazásban bevitt


adatok eltárolásra kerülhessenek. A webfórum esetében ez lehet például a regisztrációnál
megadott adatok (felhasználó neve, jelszava, e-mail címe stb.), a felhasználó személyes
adatai vagy a felhasználók által létrehozott témák és hozzászólások. Ebben segítségünkre
volt a MySQL relációs adatbázis-kezelő rendszer.

27
3.2.1. Migrációk

Ahhoz, hogy a Django modelleket a MySQL értelmezni tudja, migrációkra van


szükség. Ezt a műveletet a python manage.py makemigrations paranccsal adjuk meg a
Django számára. A Django ellenőrzi a models.py fájlon belüli elemeket (vagy az utolsó
ellenőrzés óta történő változásokat), és az adott applikáción belüli migrations könyvtárban
egy 0001_initials.py nevű fájlt hoz létre. A fájl a Django számára tartalmaz utasításokat, hogy
hogyan hozza létre az adatbázist a már létező modellek alapján. A Django így már képes
létrehozni az adatbázist a MySQL adatbázis-kezelőben.
Ahhoz, hogy a Django kommunikálni tudjon a MySQL adatbázis-kezelővel a
settings.py fájlban meg kell határozni az adatbázis tulajdonságait a DATABASE cím alatt:

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'forum',
'HOST': '127.0.0.1',
'PORT': '3306',
'USER': 'root',
'PASSWORD': 'Password',
}}

28
A modellek átvitelét a python manage.py migrate paranccsal hajtjuk végre. Az így
kapott adatbázis modellje:

29
4. A készített webfórum bemutatása

Ebben a fejezetben bemutatjuk az elkészült webfórum elemeit, illetve, hogy milyen


hibák léptek fel az elkészítése során.

Online elérhető: http://ujsforums.pythonanywhere.com/


4.1. A webfórum funkciói

4.1.1. Regisztráció és bejelentkezés

Ha a felhasználó nincs bejelentkezve, a webfórum kezdőlapja felkínálja a


bejelentkezés, illetve regisztráció lehetőséget.
A nem regisztrált felhasználónak regisztrálnia kell, hogy az adatbázis eltárolja a
felhasználónevét és jelszavát, amelyekkel később bejelentkezhet. A regisztrációs felület
három űrlapmezőt tartalmaz: felhasználónév, jelszó és jelszó megerősítése. Ezt a Django
alapvető regisztrációs felületével oldottuk meg. Ha a felhasználó az összes mezőt
megfelelően kitölti, és a betáplált adatok minden feltételnek megfelelnek, a felhasználó
adatai tárolásra kerülnek az adatbázisban. Így már be tud jelentkezni a webfórumba.
A bejelentkezés opcióra kattintva a felhasználó két űrlapmezőt lát, ahova a
felhasználónevét és a hozzá tartozó jelszavát kell megadni. A jelszavakat az adatbázis
titkosítva tárolja. Ha minden mezőt kitölt, és a bevitt adatok egyeznek az adatbázisban tárolt
adatokkal, a felhasználó beléphet a webfórumba.

4.1.2. Menü

A menüben különböző opciók állnak a felhasználó rendelkezésére. Minden egyes


opció egy hivatkozás, amely az adott URL-re irányítja a webböngészőt.
A webfórumban a következő opciók szerepelnek a menüben: a posztok listája, saját
profil, poszt létrehozása és kijelentkezés.
A posztok listája a webfórum kezdőlapjaként jelenik meg, amely felsorolja a
felhasználók által nyitott témákat. A téma nevére kattintva érheti el és szólhat hozzá a
felhasználó az adott témához. Itt egy válasz hozzáadása lehetőséget kap, amelyre rákattintva
a webböngésző egy űrlapot jelenít meg. Ezen az oldalon egy mező található, amelyben a
felhasználó megadhatja válaszát. Mikor a mező kitöltésre került, a küldés gomb segítségével
az adat tárolásra kerül az adatbázisban.

30
A saját profil opció egy sablonhoz vezet, amely a felhasználó személyes adatait és
egy profil szerkesztése hivatkozást tartalmaz. A legtöbb mező alapértelmezetten üres, hisz a
felhasználó még nem adta meg ezeket az adatokat. A profil szerkesztése hivatkozás egy
űrlapra irányítja a webböngészőt, ahol a felhasználó megadhatja adatait a megfelelő
mezőben.
A poszt létrehozása opcióval a webböngésző egy űrlapot jelenít meg, amelyben a
felhasználó megadja a poszt címét és leírását. Ha mindkét mezőt feltöltötte adattal, a mentés
gomb segítségével a poszt feltöltésre kerül az adatbázisban és megjelenik a poszt lista
oldalon. A témát létrehozó felhasználónak később lehetősége van ezeken az adatokon
változtatni.
A kijelentkezés opcióval a felhasználó kijelentkezhet a webfórumból.

4.2. Hibák

A webfórum kód írása közben különböző hibák léptek fel. A legtöbb problémát az
URL-ek megfelelő beállítása okozta, amelyek nélkül a webböngésző nem találta az oldal
megjelenítéséhez szükséges fájlt és beállításokat. Továbbá a modellek szerkezete és a view
bonyolult funkciói jelentettek nagyobb kihívást.
A legnagyobb problémát a webfórum és az adatbázis összekapcsolása jelentette. Több
alkalommal kaptunk hibaüzeneteket hiányzó modulokról, amelyek telepítése ellenére a
probléma nem szűnt meg. Továbbá különböző csatlakozási hibaüzenetek kaptunk, például,
hogy a MySQL szerver nem elérhető, a jelszó nem egyezik a megadott root jelszóval vagy
annak titkosítási módja nem megfelelő.

31
4.3. Az elkészült webfórum kinézete

Munkánk során a kinézetet elhanyagolhatónak tekintettük. Célunk nem az általunk


elkészített webfórum gyakorlati alkalmazása, hanem az egyszerűség és szabad
testreszabhatóság volt azok számára, akik fel szeretnék használni webfórumunkat saját
webalkalmazásukban.
A webfórum kinézetének alakítása pár egyszerű CSS fájl csatolásával történt. Ezek
felhasználásával a kezdőlapon a következő kinézetet kaptuk:

32
Befejezés

A szakdolgozatot a Python programozási nyelv megismerése és megtanulása


inspirálta. Mivel egyetemi tanulmányaim során erre nem került sor, jó lehetőségnek találtam,
hogy ezt a szakdolgozatom megírásával összekötve tehetem meg.
A munka során sikeresen létrehoztuk a webfórumot, amely megfelel a feladat
alapkövetelményeinek és az általunk kitűzött céloknak. Fő célunk egy egyszerű, alap
funkciókkal rendelkező alkalmazás készítése volt, amely könnyen bővíthető és
felhasználható, továbbá a hallgatók segítése, akik szeretnének megismerkedni a Django
lehetőségeivel és elkészíteni az általunk létrehozott webfórumot. Ezt a célt a mellékelt
elektronikus segédanyag megírásával értük el.
A szakdolgozat 4 fő részből épült fel. Az első fejezet részletesen bemutatta a Python
programozási nyelvet, ismertette jellemzőit és lehetőségeit, majd annak legnépszerűbb
keretrendszereit mutatta be és hasonlította össze. Ez a fejezet főleg a Python programozási
nyelvre és a Django webes keretrendszerre fókuszált, mivel a webfórum ezek segítségével
készült.
A második fejezetben felsoroltuk és jellemeztük a webfórum elkészítése során
felhasznált leíró nyelveket és programokat, amelyek a következők: HTML leíró nyelv, CSS
stílusleíró nyelv, MySQL adatbázis-kezelő rendszer, Notepad++ szöveg- és
forráskódszerkesztő és az Anaconda disztribúció.
A harmadik fejezet ismertette, hogy a webfórum milyen fájlokat tartalmaz, ezek
célját, és hogy a különböző műveletek elvégzéséhez milyen parancsok szükségesek.
Bemutatta a webfórumon belül készített applikációkat, azok alkalmazását és az adatbázis
elkészítését.
Végül a negyedik fejezetben az elkészült webfórum elemei és a készítés során fellépő
hibák kerültek bemutatásra. Ismertettük a regisztráció és bejelentkezés folyamatát, és hogy
ez hogyan kapcsolódik az adatbázishoz és a felhasználó rendelkezésére álló lehetőségek,
mint például személyes adatainak szerkesztése és webfórumon történő kommunikáció
módja. Továbbá leírtuk a készítés során fellépő hibákat, végül bemutattuk a webfórum
kinézetét.

33
Resumé

V súčasntosti sa internet stal neoddelitelnou súčasťou nášho života. Máme ho


k dispozícií takmer kdekolvek. Používame ho v rámci nášho volného času, popri práci
a učení sa. Poskytuje nám informácie, zábavu, možnosť udržiavania kontaktov
a vybavovania náležitostí.
V dnešnej dobe sa rôzne chatové programy a fórá stali najčastejšie využíváným
komunikačným nástrojom. Chatové programy umožňujú rôzne súkromné a konferenčné
rozhovory medzi dvoma, alebo viacerými stranami, pričom v rámci internetových fór
môžeme zdielať naše myšlienky a otázky s väčším publikom. V dnešnej uponáhlenej dobe
toto zdielanie a získávanie informácii môže byť veľmi užitočné, nakoľko takmer bez
hladania dostaneme odpoveď na naše otázky. Existuje množstvo fór, ktoré majú rôzne
tematiky, pričom užívatel ľahko môže požiadať o pomoc, alebo pomoc niekomu poskytnúť.
Moja voľba spadla pre vytvorenie webového fóra z dôvodu mojej záluby čítania
rôznych fór s rôznou tematikou, kde sa pýtam, alebo odpovedám na otázky uživateľov fóra.
Zaujímalo ma, ako sa takáto aplikácia stavia, pričom by som sa rád naučil spôsob vytvárania
takejto aplikácie.
Cieľom našej práce je vytvoriť prehladné webové fórum, pomocou programovacieho
jazyku Python a jeho frameworku Django, ďalej poskytnúť tieto získáné poznatky pre
budúcich poslucháčov. V tomto je nám nápomocná elektronická učebná pomôcka, v rámci
ktorej sme predstavili spôsob vytvorenia webového fóra krok po kroku.
Bakalárská práca pozostáva zo štyroch hlavných častí. Prvá kapitola podrobne
popisuje programovací jazyk Python, jeho vlastnosti a možnosti jeho využitia, ďalej
predstavuje a porovnáva jeho najznámejšie frameworky. Táto kapitola sa orientuje hlavne na
programovací jazyk Python a na webový framework Django, nakoľko sme naše webové
fórum vytvárali ich pomocou.
V druhej kapitole sú uvedené a popísané popisné jazyky a programy používané na
vytvorenie webového fóra, ako je napríklad popisný jazyk HTML, jazyk popisu štýlov CSS,
systém správy databáz MySQL, editor textových a zdrojových kódov programu Notepad ++
a distribúcia Anaconda.

34
Tretia kapitola popisuje, aké súbory webové fórum obsahuje, ich účel a aké príkazy
sú potrebné na vykonávanie rôznych operácií. Predstavuje aplikácie, aplikácie a vytváranie
databáz v rámci webového fóra.
Nakoniec štvrtá kapitola predstavuje prvky dokončeného webového fóra a chyby,
ktoré sa vyskytli počas jeho tvorby. V rámci práce predstavujeme priebeh registrácie
a prihlásenia a ako sa toto spája s dátovým súborom; možnosti, ktoré má používateľ k
dispozícii, ako napríklad úprava osobných údajov a komunikácia vo webovom fóre. Okrem
toho popisujeme chyby, ktoré sa vyskytli počas tvorby a napokon prezentujeme vzhľad
webového fóra.
Dokončené webové fórum sa skladá z rôznych funkcií a prvkov. Ak užívateľ nie je
prihlásený, domovská stránka webového fóra ponúka prihlásenie alebo registráciu.
Neregistrovaný užívateľ sa musí zaregistrovať, aby si databáza uložila svoje užívateľské
meno a heslo na prihlásenie neskôr. Registračné rozhranie obsahuje tri polia formulára:
potvrdenie používateľského mena, hesla a potvrdenie hesla. Toto sme vykonali pomocou
základným registračným rozhraním Django. Ak užívateľ vyplní všetky polia správne a
vstupné údaje spĺňajú všetky kritériá, údaje používateľa sú uložené v databáze. Ak užívateľ
vyplní všetky polia správne a vstupné údaje spĺňajú všetky kritériá, údaje používateľa sú
uložené v databáze. V tomto prípade je už možné prihlásiť sa do webového fóra.
Kliknutím na prihlasovaciu možnosť, užívateľ uvidí dve polia formulára, do ktorých
má byť zadané jeho užívateľské meno a heslo. Heslá sú uložené v databáze šifrované. Keď
sa vyplnia všetky polia a zadané údaje sa zhodujú s údajmi uloženými v databáze, užívateľ
môže vstúpiť do webového fóra.
Používateľ má v ponuke k dispozícii rôzne možnosti. Každá možnosť je odkaz, ktorý
smeruje webový prehliadač na túto adresu URL. Vo webovom fóre sú k dispozícii
nasledujúce možnosti: zoznam postov, vlastný profil, vytvorenie postu a odhlásenie.
Zoznam postov je zobrazený ako domovská stránka webového fóra, na ktorom sú
uvedené témy, ktoré používatelia otvorili. Kliknutím na názov postu umožníte používateľovi
prístup k téme. Tu získate možnosť pridať odpoveď a kliknutím na webový prehliadač
zobraziť formulár. Na tejto stránke je pole, kde môže užívateľ poskytnúť odpoveď. Keď je
pole vyplnené, tlačidlo odoslania sa používa na uloženie údajov do databázy.

35
Výber možnosti vlastného profilu vedie k šablóne, ktorá obsahuje osobné údaje
používateľa a úpravu odkazu. Väčšina polí je štandardne prázdna, pretože používateľ tieto
údaje ešte nezadal. Odkaz Upraviť profil nasmeruje webový prehliadač na formulár, do
ktorého môže používateľ zadať svoje údaje do príslušného poľa. Možnosť Vytvoriť post
umožňuje webovému prehliadaču zobraziť formulár, v ktorom používateľ zadá názov postu
a popis. Ak sa obe polia vyplnili údajmi, pomocou tlačidla Uložiť sa post nahrá do databázy
a objaví sa na stránke zoznam postov. Používateľ, ktorý vytvoril post, môže neskôr tieto
údaje zmeniť.
Pomocou možnosti odhlásenia sa užívateľ môže odhlásiť z webového fóra.
Pri písaní kódu webového fóra sa vyskytli rôzne chyby. Najviac problémov
spôsobovalo nastavenie správnych URL adries, bez ktorých prehliadač nemohol nájsť
potrebné súbory a nastavenia pre zobrazenie stránky. Ďalej boli pre nás výzvou štruktúry
modelov a komplikované funkcie view –u. Najväčším problémom bolo prepojenie webového
fóra a databázy. Niekoľkokrát sme dostali chybové hlásenia o chýbajúcich moduloch, ktoré
napriek inštalácii problém nevyriešili. Okrem toho sme dostali rôzne chybové hlásenia o
pripojení, napríklad, že server MySQL nie je k dispozícii, heslo nezodpovedá zadanému
heslu užívateľa root, alebo metóda šifrovania je nesprávna.
Inspiráciou pre napísanie bakalárskej práce bolo naučiť sa používať programovací
jazyk Python. Vzhladom na to, že som počas môjho vysokoškolského štúdia nemal možnosť
oboznámiť sa s týmto programovacím jazykom, preto som využil túto príležitosť pri písaní
svojej bakalárskej práce.
Počas práce sme úspešne vytvorili webové fórum, ktoré spĺňa základné požiadavky
úlohy a ciele, ktoré sme si stanovili. Naším hlavným cieľom bolo vytvoriť jednoduchú,
základnú aplikáciu, ktorá by sa dala ľahko rozšíriť a použiť, ako aj pomôcť poslucháčom,
ktorí chcú spoznať možnosti frameworku Django a vytvoriť tak webové fórum. Tento ciel
sme dosiahli taktiež pomocou elektronickej pomôcky, ktorá sa nachádza v prílohe.

36
Felhasznált irodalom

About Notepad++ [online]. 2019. https://notepad-plus-plus.org/ [megtekintés dátuma:


2019.06.25.]

Anaconda (Python distribution) [online]. 2019.


https://en.wikipedia.org/wiki/Anaconda_(Python_distribution) [megtekintés dátuma:
2019.06.25.]

ARORA, Sagar. Top 11 Python Frameworks in 2018 [online]. 2018.


https://stackify.com/python-frameworks/ [megtekintés dátuma: 2019.05.15.]

Django [online]. 2018. http://django.hu/django [megtekintés dátuma: 2019.02.15.]

GUARDIA, Carlos. Python Web Frameworks. Sebastopol: O’Reilly Media, Inc., 2016.
ISBN 978-1-491-93810-2

Pyramid Introduction [online]. 2019.


https://docs.pylonsproject.org/projects/pyramid/en/latest/narr/introduction.html
[megtekintés dátuma: 2019.05.15.]

REITZ, Kenneth – SCHLUSSER, Tanya. The Hitchhiker’s Guide to Python. Sebastopol:


O’Reilly Media, Inc., 2016. ISBN 978-1-491-93317-6

ROUSE, Margaret. MySQL [online]. 2018.


https://searchoracle.techtarget.com/definition/MySQL [megtekintés dátuma: 2019.06.25.]

SteelKiwi Inc. Top 10 Python Web Frameworks to Learn in 2018 [online]. 2018.
https://hackernoon.com/top-10-python-web-frameworks-to-learn-in-2018-b2ebab969d1a
[megtekintés dátuma: 2019.02.15.]

SWINNEN, Gérard. Tanuljunk meg programozni Python nyelven. 2005.

Tutorials Point (I) Pvt. Ltd. CSS Tutorial. [online]. 2017.


https://www.tutorialspoint.com/css/css_tutorial.pdf [megtekintés dátuma: 2019.06.25.]

WEMPEN, Faithe. HTML5 Step by Step. Sebastopol: O’Reilly Media, Inc., 2011. ISBN
978-0-735-64526-4

37
What is Python? [online]. 2019. https://www.python.org/doc/essays/blurb/ [megtekintés
dátuma: 2019.05.14.]

Working with forms [online]. 2019. https://docs.djangoproject.com/en/2.2/topics/forms/


[megtekintés dátuma: 2019.05.14]

38
Mellékletek

A mellékelt elektronikus segédanyag tartalma

A mellékelt elektronikus segédanyag dokumentum a munkánk során készített


webfórum részletes leírását tartalmazza, valamint lépésről lépésre leírja elkészítésének
folyamatát utasítások, képek és program kódok segítségével.
Tartalma:
1. Szükséges eszközök telepítése
1.1. Python
1.2. Anaconda
1.3. MySQL
1.4. Django
2. A webfórum elkészítése
2.1. Új project
2.2. Applikációk létrehozása
2.3. Űrlap létrehozása
2.4. View funkciók létrehozása
2.5. Sablonok
2.6. Adatbázis felépítése
2.6.1. Modellek
2.6.2. Settings.py beállitások
2.6.3. Migrációk
2.7. Adminisztrátor felület
3. Hibaüzenetek
4. Befejezés

A CD melléklet tartalma
 A szakdolgozat PDF formátumban
 Az elektronikus segédanyag PDF formátumban
 Forráskódok

39
A webfórum online elérhetősége:
http://ujsforums.pythonanywhere.com/

Az adminisztrátor felület belépési adatai:


 Felhasználónév: leo
 Jelszó: Password
 Elérhetősége: http://ujsforums.pythonanywhere.com/admin/

40

You might also like