Flask
Főnév
Flask (tsz. Flasks)
- (informatika) A Flask egy könnyű és minimalista webes keretrendszer (web framework) a Python programozási nyelvhez, amelyet arra terveztek, hogy egyszerűvé tegye a webes alkalmazások fejlesztését. A Flask a micro-framework kategóriába tartozik, ami azt jelenti, hogy csak az alapvető funkciókat biztosítja, és a fejlesztőknek lehetőségük van szabadon bővíteni a keretrendszert különféle bővítményekkel és könyvtárakkal. Ez rugalmasságot biztosít, hogy a fejlesztők saját igényeikre szabják az alkalmazásukat anélkül, hogy egy nagy és összetett keretrendszerrel kellene dolgozniuk.
Flask főbb jellemzői:
- Minimalista és könnyű: A Flask csak az alapvető funkciókat biztosítja, mint például a URL-ek kezelését, HTTP-kérések feldolgozását és sablonkezelést. Mivel nem egy nagyobb keretrendszer, mint például a Django, a Flask lehetőséget ad arra, hogy a fejlesztő maga válassza meg a szükséges komponenseket és eszközöket.
- Jinja2 sablonmotor: A Flask beépített sablonkezelője a Jinja2, amely lehetővé teszi dinamikus HTML oldalak létrehozását. A Jinja2 segítségével egyszerűen elválasztható az alkalmazás logikája a megjelenítéstől.
- Werkzeug könyvtár: A Flask a Werkzeug könyvtárra épül, amely egy erőteljes WSGI (Web Server Gateway Interface) segédprogram, és a HTTP-kérések kezelését végzi.
- Moduláris bővíthetőség: A Flask számos bővítményt kínál, amelyeket könnyen integrálhatunk az alkalmazásba, például adatbázis-kezelésre (SQLAlchemy), hitelesítésre, biztonságra, e-mailek küldésére, és sok más funkcióra.
- Fejlesztési rugalmasság: A Flask rugalmas, így kiválóan alkalmas kisebb projektekhez, prototípusokhoz, valamint nagyobb, skálázható alkalmazásokhoz is. A minimalista alap megengedi, hogy a fejlesztők csak azokat a funkciókat és eszközöket használják, amelyekre szükségük van.
- Fejlesztési mód: A Flask rendelkezik egy beépített fejlesztési szerverrel, amely megkönnyíti a hibakeresést, mivel automatikusan újraindul, ha a kód megváltozik. Emellett kiváló hibakeresési és hibaelhárítási információkat nyújt a fejlesztők számára.
Flask telepítése:
A Flask telepítése egyszerű, a Python csomagkezelőjével, a pip
-pel történik:
pip install Flask
Egyszerű „Hello, World!” Flask alkalmazás:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello, World!"
if __name__ == '__main__':
app.run(debug=True)
Kódrészlet magyarázata:
Flask
: Ez az osztály reprezentálja az alkalmazást. AFlask(__name__)
létrehozza a webes alkalmazást.@app.route('/')
: Ez egy dekorátor, amely meghatározza, hogy a'/'
URL-en milyen függvény hívódik meg. Ebben az esetben, ha a felhasználó a gyökér URL-t látogatja meg, akkor ahello()
függvény fog futni, amely a „Hello, World!” üzenetet jeleníti meg.app.run(debug=True)
: Az alkalmazás elindítása fejlesztési módban. Adebug=True
bekapcsolja a Flask hibakeresési módját, amely automatikusan újraindítja az alkalmazást, ha változtatásokat hajtunk végre.
Route kezelés:
A Flask segítségével könnyedén meghatározhatjuk, hogy melyik URL-hez melyik függvény tartozik. Például egy másik útvonal:
@app.route('/hello/<name>')
def hello_name(name):
return f"Hello, {name}!"
Ebben az esetben, ha valaki meglátogatja a http://localhost:5000/hello/John
URL-t, akkor a “Hello, John!” üzenetet fogja látni. A <name>
rész lehetővé teszi dinamikus adat fogadását az URL-ben.
Templating a Flask-ban (Jinja2 használata):
A Flask beépített sablonmotorja, a Jinja2, lehetővé teszi dinamikus HTML-oldalak létrehozását:
from flask import render_template
@app.route('/greet/<name>')
def greet(name):
return render_template('greet.html', name=name)
A greet.html
fájl tartalma lehet például a következő:
<!DOCTYPE html>
<html>
<head>
<title>Greeting</title>
</head>
<body>
<h1>Hello, {{ name }}!</h1>
</body>
</html>
Ebben a példában a Flask beilleszti a name
változó értékét a sablonba.
Adatbázis-kezelés Flask-ban:
A Flask alapból nem tartalmaz beépített adatbázis-kezelést, de könnyen integrálható olyan bővítményekkel, mint a Flask-SQLAlchemy, amely egy ORM (Object-Relational Mapping) eszköz, amely megkönnyíti az adatbázisokkal való interakciót.
Például a Flask-SQLAlchemy telepítése:
pip install Flask-SQLAlchemy
És egy egyszerű példa az adatbázis-kezelésre:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///example.db'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
def __repr__(self):
return f'<User {self.username}>'
if __name__ == '__main__':
db.create_all()
app.run(debug=True)
Ebben a példában egy SQLite adatbázis hozható létre, és egy User
nevű táblát definiálunk az adatbázisban.
Flask bővítmények:
A Flask számos bővítménnyel bővíthető, amelyek további funkcionalitást adnak az alkalmazáshoz, például:
- Flask-WTF: Űrlapok kezelése és validálása.
- Flask-Login: Felhasználói hitelesítés és bejelentkezés kezelése.
- Flask-Migrate: Adatbázis-migrációk kezelése Alembic segítségével.
- Flask-Mail: E-mailek küldése.
Flask előnyei:
- Egyszerűség és rugalmasság: A Flask könnyű és egyszerű használni, ami gyors fejlesztést tesz lehetővé. Emellett rugalmas, és a fejlesztők maguk dönthetnek a szükséges eszközökről és kiegészítőkről.
- Bővíthetőség: A Flask könnyen bővíthető különböző könyvtárakkal és bővítményekkel, így könnyen alakítható a projekt igényeihez.
- Kis erőforrás-igény: A Flask nem követeli meg nagy számú külső csomag használatát, így könnyebb és gyorsabb, mint a nehezebb keretrendszerek, például a Django.
Flask hátrányai:
- Kevesebb beépített funkció: Mivel a Flask egy micro-framework, alapból kevesebb funkciót biztosít, így a fejlesztőknek maguknak kell hozzáadniuk azokat a funkciókat, amelyek szükségesek a projektjükhöz.
- Nagyobb projektek kezelése: Bár a Flask bővíthető, nagyobb projektek esetén több munka lehet a Flask megfelelő felépítése és karbantartása, mivel nem rendelkezik beépített adminisztrációs felülettel vagy automatikus URL-routinggal.
Összefoglalás:
A Flask egy könnyen használható, rugalmas webes keretrendszer a Python nyelvhez, amely különösen népszerű kisebb projektekhez, API-khoz és protot