آموزش فریمورک فلسک | مدیریت درخواست‌ها

درخواست GET و POST

در فریمورک فلسک، دو روش اصلی برای ارسال درخواست از سمت کاربر به سرور وجود دارد: GET و POST. این دو نوع درخواست برای ارسال و دریافت داده‌ها در وب استفاده می‌شوند.

درخواست GET:

  • این روش برای دریافت اطلاعات از سرور استفاده می‌شود.
  • داده‌ها از طریق URL (آدرس وب) ارسال می‌شوند و در نوار آدرس مرورگر قابل مشاهده هستند.
  • مثال: وقتی کاربر یک صفحه وب را باز می‌کند یا روی لینکی کلیک می‌کند، از روش GET استفاده می‌کند.
  • برای ارسال داده‌های حساس (مانند رمز عبور) مناسب نیست، زیرا داده‌ها در تاریخچه مرورگر ثبت می‌شوند.

درخواست POST:

  • این روش برای ارسال داده به سرور (مانند پر کردن فرم) استفاده می‌شود.
  • داده‌ها در بدنه درخواست (Request Body) ارسال می‌شوند و در URL نمایش داده نمی‌شوند.
  • برای داده‌های حجیم یا حساس (مانند فایل‌ها و اطلاعات کاربری) مناسب است.

تعریف مسیرها برای GET و POST در فلسک:
برای تعیین اینکه یک مسیر (route) از کدام روش استفاده کند، از پارامتر methods در دکوراتور @app.route استفاده می‌کنیم. به طور پیش‌فرض، فلسک فقط درخواست‌های GET را می‌پذیرد.

مثال ساده:
فرض کنید می‌خواهید یک فرم ورود اطلاعات داشته باشید. ابتدا یک مسیر برای نمایش فرم (با GET) و سپس همان مسیر برای دریافت داده‌های فرم (با POST) تعریف می‌کنید.

from flask import Flask, request

app = Flask(__name__)

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        # داده‌ها از طریق فرم ارسال شده است
        username = request.form['username']
        password = request.form['password']
        return f"خوش آمدید {username}"
    else:
        # درخواست GET است، فرم نمایش داده می‌شود
        return '''
            <form method="POST">
                <input type="text" name="username" placeholder="نام کاربری">
                <input type="password" name="password" placeholder="رمز عبور">
                <button type="submit">ورود</button>
            </form>
        '''

توضیح کد:

  • methods=['GET', 'POST']: به فلسک می‌گوییم این مسیر هر دو نوع درخواست را قبول کند.
  • request.method: متغیری است که نوع درخواست فعلی (GET یا POST) را مشخص می‌کند.
  • در بخش if request.method == 'POST': داده‌های فرم توسط request.form دریافت می‌شوند. نام فیلدها (username و password) باید با نام name در تگ‌های HTML مطابقت داشته باشد.
  • در بخش else: اگر درخواست GET باشد، فرم HTML را به کاربر نشان می‌دهیم.

نکته مهم:

  • اگر فقط از @app.route('/login') بدون مشخص کردن methods استفاده کنید، فلسک فقط درخواست GET را می‌پذیرد و ارسال فرم با خطای "Method Not Allowed" مواجه می‌شود.

اکنون کاربر می‌تواند با مرور آدرس /login فرم را ببیند و پس از پر کردن و کلیک روی دکمه، داده‌ها به سرور ارسال و پردازش می‌شوند.

پرسش و پاسخ این درس

برای ثبت پرسش ابتدا در سایت وارد شوید.

  • 1
  • 2
  • 3