ما هو Flask - دليل شامل لإطار عمل Python للويب
مقدمة عن Flask
Flask هو إطار عمل ويب بسيط ومصغر بلغة Python، مصمم لبناء تطبيقات الويب و REST API. يوفر هيكلًا مرنًا وسهلًا يسمح بتطوير النماذج الأولية والتطبيقات المتكاملة بسرعة. يعتمد Flask على أدوات WSGI من Werkzeug ويستخدم نظام القوالب Jinja2.
تم إنشاء Flask بواسطة Armin Ronacher في عام 2010، واكتسب شهرة واسعة بفضل فلسفته "افعل شيئًا واحدًا وافعله جيدًا". على عكس الأطر الأكثر ثقلًا، يقدم Flask الحد الأدنى الضروري فقط، مما يتيح للمطورين اختيار المكونات المناسبة لمشاريعهم بحرية.
الميزات الرئيسية لـ Flask
منهجية مصغرة وقابلة للتوسع
يتبع Flask مبدأ الإطار المصغر، حيث يوفر الوظائف الأساسية ويتيح توسيعها عبر الإضافات والمكتبات.
نظام توجيه مدمج ومعالجة الطلبات
يوفر الإطار نظام توجيه بديهي يدعم طرق HTTP المختلفة ومعاملات URL.
دعم قوالب Jinja2
التكامل مع نظام القوالب القوي Jinja2 يضمن سهولة العمل مع قوالب HTML والمحتوى الديناميكي.
إمكانية إنشاء REST API
يعتبر Flask مثاليًا لبناء RESTful API بفضل دعمه لاستجابات JSON ومعالجة طرق HTTP بمرونة.
دعم الإضافات
النظام البيئي الغني للإضافات يسمح بإضافة وظائف للتعامل مع قواعد البيانات، المصادقة، النماذج، وغيرها الكثير.
التوافق مع Python 3.7+
يدعم Flask الإصدارات الحديثة من Python ويتبع أفضل ممارسات التطوير.
التثبيت والإعداد
التثبيت عبر pip
pip install flask
التحقق من التثبيت
python -m flask --version
إنشاء ملف app.py وتشغيله
export FLASK_APP=app.py
flask run
لنظام Windows:
set FLASK_APP=app.py
flask run
إنشاء أول تطبيق
مثال بسيط لملف app.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def home():
return "مرحبًا بك في Flask!"
if __name__ == '__main__':
app.run(debug=True)
تشغيل التطبيق
flask run
سيكون التطبيق متاحًا على الرابط http://localhost:5000/
معالجة المسارات و URL
التوجيه الأساسي
@app.route("/user/<username>")
def show_user_profile(username):
return f"ملف المستخدم: {username}"
مسارات مع تحديد النوع
@app.route("/post/<int:post_id>")
def show_post(post_id):
return f"المقال رقم {post_id}"
@app.route("/user/<path:subpath>")
def show_subpath(subpath):
return f"المسار الفرعي: {subpath}"
أنواع المعاملات المدعومة
string- نصوص (افتراضي)int- أعداد صحيحةfloat- أعداد عشريةpath- نصوص تحتوي على "/"uuid- سلاسل UUID
التعامل مع طرق HTTP
معالجة الطرق المختلفة
@app.route("/data", methods=["GET", "POST", "PUT", "DELETE"])
def handle_data():
if request.method == "POST":
return "تم إنشاء البيانات"
elif request.method == "PUT":
return "تم تحديث البيانات"
elif request.method == "DELETE":
return "تم حذف البيانات"
return "جلب البيانات"