Flask: إطار ويب خفيف لتطوير تطبيقات Python

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

ما هو 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 "جلب البيانات"

العمل مع القوالب

توصيات