أنشئ تطبيقك الأول في فلاسك Flask

في مقال اليوم سأقدم لك نظرة عامة حول إطار العمل Flask   وهو هو إطار عمل لتطوير تطبيقات الويب باستخدام لغة Python. يتميز فلاسك Flask بالبساطة والمرونة، مما يجعله مثاليًا لبناء تطبيقات صغيرة إلى متوسطة الحجم.

 ما هو إطار العمل فلاسك Flask؟

يُعرف فلاسك Flask بأنه إطار عمل مصغر لتطوير تطبيقات الويب . ويسمى مصغر لأنه يوفر الوظائف الأساسية التي تمكنك كطور من بناء مواقع ويب بسيطة ولا يناسب تطوير مواقع معقدة فهو لا يكون محملًا بجميع الميزات والميزات اللازمة للتطوير كما في أطر عمل الويب الأخرى مثل جانغو Django أو لارافيل Laravel.

خطوات تثبيت  فلاسك Flask

إن تركيب  فلاسك Flask بسيط وسهل فكل ما هو مطلوب لتثبيته هو تشغيل  الطرفية أو نافذة موجه الأوامر الخاصة بك وكتابة الأمر التالي:

 pip: pip install flask

خطوات تطوير موقع ويب باستخدام Flask



سنقوم بإنشاء موقع ويب بسيط في  فلاسك Flask بخطوات سهلة ومباشرة، بداية أنشئ ملف باسم app.py  أو بأي اسم تريده وضعه في المجلد الخاص به وافتحه بمحرر الأكواد الذي تفضله (أنا أستخدم VSCode).

عليك أن تبدأ مشروع فلاسك Flask بتحديد بملف التطبيق App، وفيه يمكنك تعريف الصفحات ومسارات التوجيه Routes والوظائف الأخرى.

 كل ما يتعين علينا فعله هو تحديد وظيفة تمثل كل صفحة وتعيين عنوان URL/ الخاص بها. ستقوم هذه الوظائف بتنفيذ بعض العمليات وإرجاع بعض أكواد HTML التي يجب عرضها. 

from flask import Flask, render_template, request


app = Flask(__name__)


@app.route('/')

def home():

    return render_template('index.html')


@app.route('/submit', methods=['POST'])

def submit_form():

    if request.method == 'POST':

        data = request.form['data']

        return f'تم استلام البيانات: {data}'


if __name__ == '__main__':

    app.run(debug=True)

دعني أشرح الكود خطوة بخطوة:

قمنا في البداية باستيراد الحزم والوحدات الضرورية  وهي الوحدة  Flask اللازمة لإنشاء تطبيق والوحدة  render_template لعرض أو تصيير صفحات HTML، والوحدة request للتفاعل مع الطلبات الواردة.

في السطر التالي   app = Flask(__name__) أنشأنا تطبيق فلاسك باستخدام الاسم الحالي للملف (`__name__`). هذا الكائن سيكون محور التطبيق وسيدير جميع العمليات.

بعدها استخدمنا الديكوريتر @app.route('/') من أجل تحديد المسار الرئيسي للتطبيق فعند زيارة الصفحة الرئيسية  ترجع الدالة home() تقوم بإرجاع صفحة HTML مستخدمة render_template.`

  ثم استخدمنا الديكوريتر @app.route('/submit', methods=['POST'])، لتحديد المسار الذي سيتم استخدامه للتعامل مع طلبات النماذج الذي تم إرسالها باستخدام الطريقة POST. فالدالة submit_form() تتحقق هنا  من أن الطلب هو طلب POST، ثم تستخرج البيانات من النموذج باستخدام request.form وتعيد رسالة تؤكد استلام البيانات.

وأخيرًا نشغل التطبيق من خلال كتابة الكود التالي 

   if __name__ == '__main__':

       app.run(debug=True)

 الذي يتحقق من أن يتم تشغيل التطبيق مباشرة و ليس من خلال الاستيراد، ثم يشغل التطبيق على الخادم المحلي باستخدام `app.run()`، وخاصية `debug=True` تساعد على تتبع الأخطاء بشكل أفضل.

في النهاية، سيقدم هذا الكود تطبيق Flask بسيط يحتوي على صفحة رئيسية تظهر عند زيارة الرابط الرئيسي وصفحة استمارة تستجيب لإرسال البيانات عبر الطريقة POST.

الخطوة التالية هي إنشاء مجلد template وأنشئ بداخله ملف index.html  ونضع فيه كود HTML الذي سيُستخدم كقالب لصفحة الويب في تطبيق Flask. 

<!DOCTYPE html>

<html lang="en">

  <head>

    <meta charset="UTF-8" />

    <meta http-equiv="X-UA-Compatible" content="IE=edge" />

    <meta name="viewport" content="width=device-width, initial-scale=1.0" />

    <title>تطبيق Flask البسيط</title>

  </head>

  <body>

    <h1>مرحبًا بك في تطبيق فلاسك البسيط</h1>

    <form action="/submit" method="post">

      <label for="data">أدخل بيانات:</label>

      <input type="text" name="data" required />

      <button type="submit">إرسال</button>

    </form>

  </body>

</html>


لقد انتهيت الآن من إنشاء أول صفحة ويب لك  باستخدام فلاسك وحان الوقت لاختبارها، عد للملف app.py وقم بتشغيل الكود لاختباره على خادم محلي (في دروس لاحقة سأعملك كيف تنشر الموقع على خادم  فعلي) 



سيظهر لك الرابط  http://127.0.0.1:5000 الذي يمثل عنوان تطبيق فلاسك على السيرفر المحلي كل ما عليك هو الانتقال إلى هذا العنوان من متصفح الويب لترى صفحتك الأولى باستخدام فلاسك كما في الصورة التالية.

 


ملاحظة1: 

 بما أن هذا التطبيق يعمل محليًا، فلن يتمكن سوى الجهاز الذي يقوم بتشغيل برنامج python النصي من الوصول إلى موقع الويب. قد تلاحظ بعض التحذيرات عند بدء تشغيل البرنامج النصي الخاص بك. تجاهلها في الوقت الحالي. 


ملاحظة2: 

يستفيد  فلاسك من سيرفرتطوير مدمج يسمى Werkzeug، وهو أداة تطوير Python تقدم خوادم وأدوات تطوير إضافية. هذا السيرفر يكون مدمجًا مع Flask ويسمح لك بتشغيل التطبيق على الخادم المحلي بسهولة دون الحاجة لإعداد خادم محلي على جهازك ليتيح لك البدء بتطوير تطبيقاتك بسرعة دون الحاجة إلى إعداد السيرفر.

مهمتك كمطور هي تثبيت Flask عبر pip، ومن ثم كتابة التطبيق الخاص بك. Flask يقوم بباقي العمل بما في ذلك إعداد وتشغيل الخادم المحلي أثناء التطوير. يمكنك ببساطة الوصول إلى تطبيقك عبر المتصفح عند استخدام `http://127.0.0.1:5000` ورؤية تأثير التغييرات التي تقوم بها في الوقت الفعلي.

تنسيق ملف القالب

لنضف كخطوة أخيرة بعض التنسيقات على ملف القالب 


<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>تطبيق Flask البسيط</title>


    <style>

        body {

            font-family: 'Arial', sans-serif;

            background-color: #f4f4f4;

            text-align: center;

            padding: 20px;

        }


        h1 {

            color: #333;

        }


        form {

            max-width: 400px;

            margin: 20px auto;

            background-color: #fff;

            padding: 20px;

            border-radius: 8px;

            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);

        }


        label {

            display: block;

            margin-bottom: 10px;

            font-weight: bold;

        }


        input {

            width: 100%;

            padding: 10px;

            margin-bottom: 15px;

            box-sizing: border-box;

        }


        button {

            background-color: #007bff;

            color: #fff;

            padding: 10px 15px;

            border: none;

            border-radius: 5px;

            cursor: pointer;

            font-size: 16px;

        }

    </style>

</head>

<body>

    <h1>مرحبًا بك في تطبيق فلاسك البسيط</h1>


    <form action="/submit" method="post">

        <label for="data">أدخل بيانات:</label>

        <input type="text" name="data" required />

        <button type="submit">إرسال</button>

    </form>

</body>

</html>


كتابة عناوين URL ديناميكية


الآن دعونا ننتقل إلى صفحتنا الويب التالية ولكن هذه المرة، سنصل إليها باستخدام شيء يُسمى عنوان URL أو مسار ديناميكي. يتيح لنا هذا ببساطة توجيه أي عنوان URL يتطابق مع نمط محدد إلى صفحة ويب معينة. 
يمكن أن يكون ذلك مفيدًا لعرض المدونات، حيث يمكن عرض كل تدونة بنفس الطريقة مع الاختلاف في المحتوى فقط. من خلال إنشاء مسار ديناميكي إلى جميع المدونات، وقراءة id التدوينة من شريط العناوين وتمريرها إلى وظيفة يمكنها عرض تلك التدوينة المحددة، بدلاً من إنشاء صفحة ووظيفة لكل تدوينة.


لتعريف مسار ديناميكي،نضع اسم المتغير المطلوب داخل<> كما في الكود التالي:
@app.route("/<name>")
def user(name):
    return f"Hello {name}!"


عند إضافة هذا الكود لملف app.py سيمكنك من توجيه أي عنوان URL إلى هذه الوظيفة، وتمرير متغير الاسم إلى الوظيفة وعرض ترحيب مخصص لهذا الاسم على صفحة الويب.



إعادة التوجيه


آخر شيء سأشرحه هو كيفية توجيه المستخدمين إلى صفحات أخرى redirect، للقيام بذلك، سنبدأ بتوسيع استيراد بعض الوظائف الإضافية من الوحدة Flask.

from flask import Flask, redirect, url_for

وسأقوم بإنشاء صفحة ويب أخرى تسمى admin لتوضيح كيفية استخدام هذه الوظائف.

from flask import Flask, redirect, url_for

app = Flask(__name__)

@app.route("/admin")
def admin():
return redirect(url_for("home"))



تأخذ الوظيفة url_for برامتر هو  اسم الوظيفة التي تريد توجيه المستخدم إليها. في هذا المثال، نريد التوجيه إلى الصفحة الرئيسية، لذلك سنضع اسم الوظيفة الخاص بالصفحة الرئيسية وهو home.

الآن، كلما حاولت زيارة الصفحة http://127.0.0.1:5000/admin ، سيتم توجيهك إلى الصفحة الرئيسية للموقع بصورة تلقائية..


إليك الكود الكامل للملف app.py

from flask import Flask, render_template, request, redirect, url_for


app = Flask(__name__)



@app.route('/')

def home():

    return render_template('index.html')



@app.route('/submit', methods=['POST'])

def submit_form():

    if request.method == 'POST':

        data = request.form['data']

        return f'تم استلام البيانات: {data}'

@app.route("/<name>")
def user(name):
    return f"Hello {name}!"

@app.route("/admin")
def admin():
return redirect(url_for("home"))

if __name__ == '__main__':

    app.run(debug=True)

الخلاصة


تعرفنا في مقال اليوم أساسيات التعامل مع إطار عمل بايثون فلاسك وقمنا ببناء موقو ويب بسيط قادرة على التعامل مع الروابط الدايناميكية وتوجيه الروابط هذا كل شيء لليوم، في المقالات اللاحقة سأشرح لك المزيد عن إطار عمل فلاسك وأوضح كيفية تطوير مواقع أكثر احترافية تتضمن التعامل مع قواعد البيانات وإجراء عمليات على البيانات.




Next Post Previous Post
No Comment
Add Comment
comment url