آموزش فریمورک فلسک | مدیریت درخواستها
خطای دسترسی
برای ثبت پاسخ، ابتدا باید در سایت وارد شوید.
درخواست 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 فرم را ببیند و پس از پر کردن و کلیک روی دکمه، دادهها به سرور ارسال و پردازش میشوند.
برای ثبت پرسش ابتدا در سایت وارد شوید.