Sokan Academy

خب خب، اصلا فلاسک چی هست؟

اگر نمیدونستین چیه سراغ مقاله نمیومدین که.

برای خنده گفتم😎

Flask یکی از بهترین فریمورک های طراحی سایت(back-end) برای پایتون هست.

بر خلاف DJango فلاسک خیلی راحت تره، کل کد های فلاسک(منظورم کد های ماژولشه) به کل کد های مدل های جنگو هم نمیرسه و کلا فلاسک فریمورک جمع و جور تری هست.

Flask یک میکرو فریم ورک هست و کار های بزرگ باهاش نمیزنن(هر چند همیشه هم اینطوری نیست، سایت reddit با فلاسک نوشته شده) ولی کلا جنگو برای کار های بزرگ از چند نظر مناسب تره

  1. کشش بیشتری داره، فلاسک در پروژه های بزرگ(بستگه به نوع معماری) کم میاره
  2. کد های جنگو خیلی آماده هستن و نصف کد ها خودشون نوشته شدن، شما با یه کلیک میتونین یه فرم بسازین(....)

ولی در عوض فلاسک کد های بیشتری باید نوشت اما سرعت یادگیری فلاسک بالاتره


خب بریم سراغ آموزش

اول از همه، فلاسک یک کتابخانه پایتونیه، ولی تمام کتابخانه های کنارش نصب نمیشن(شما برای بانک SQL کتابخانه Flask-SQLalchemy رو باید جدا نصب کنین،یا برای لاگین کاربران باید کتابخانه Flask-Login رو نصب کنین، یا اگر حوصله ساخت یک فرم رو نداشته باشین با html، باید Flask-Form و WTForms رو نصب کنین(اگر اشتباه نگفته باشم))

ولی فعلا ما با بقیه ی کتابخانه های این فریمورک کاری نداریم، فعلا می ریم که Flask رو نصب کنیم

اگر پکیج هاتون خیلی زیاد نیست، نیازی به نصب فلاسک توی venv نیست، چون کدهای فلاسک خیلی زیاد نیست، ولی اگر پکیج هاتون خیلی زیاده و نگران تداخل هستین، میتونین یک venv بسازین

خب بریم سراغ نصب

pip install Flask

به بزرگی و کوچکی حروف دقت کنین

برای اطمینان از نصب کامل 

>> Flask --version
Python 3.11.2
Flask 2.3.2
Werkzeug 2.3.6

خب بریم که یک برنامه رو با فلاسک استارت بزنیم.

خب ما توی این قسمت از معماری خاصی استفاده نمیکنیم و کل کد هامونو توی یک فایل مینویسیم(کد های پایتونی، نه html!)

پس اول باید یه دایرکتوری به صورت زیر بسازید

WebSite
|_Tempaltes
|_static
	|_css
	|_js
	|_images
|_app.py

فایل App.py فایل اصلی پروژه ما هست پس بازش کنین و کد هاتونو بنویسین(معمولا اسم این فایل رو App میذارن ولی محدودیت اسم ندارین)

اول از همه ایمپورتش میکنیم و یک آبجکت ازش میسازیم و name رو بهش پاس میدیم(اینجا داندر متد اسم رو بولد میکنه، به خاطر همین name بولد شده)

from flask import Flask

app = Flask(__name__)

میرسیم به ساخت اولین url-مون

هنگام ساخت یک وبسایت، به صفحاتش url نمیگن هااا میگن route(اینم یه نصیحت مهم)

برای ساخت یک route باید از متغییر اپ به صورت دکوریتور استفاده کنیم(اگر نمیدونین دکوریتور چیه، برین ببینین مقاله ای در موردش دارم یا نه، اگر نه زیر پست درخواست بدین)

@app.route('/')
def one():
    pass

متد route آرگومان ریکوایرد rule رو میگیره که متن url هست، یعنی اگر میخواین صفحه هوم رو بسازین باید یه / و مثلا گر صفحه example.com/Test رو میخواین بسازین باید یه /Test وارد کنین

/ رو باید قبل از متن بذارین، توی جنگو باید بعد از متن میذاشتین ولی توی فلاسک قبل متن هست، نرین بذارین بعد متن هااا

فلاسک مثل جنگو صفحه خوش آمد رو بهتون نشون نمیده، و گفتم همه چی باید با خودتون باشه

خب، حالا اگر بخواین یک صفحه html رو نشون بدین باید چی کار کنین؟

باید صفحه html رو در پوشه Templates بسازین(اینجا اسم پوشه ی Templates دست خودتون نیست و باید حتما Templates  باشه - اون s آخرش هم فراموش نشه!)

حالا کافیه از فلاسک، فانشکن render_template رو وارد کنین که دیگه کدش رو نمینویسم

بعد توی render_template  اسم فایل توی پوشه ی Templates رو میدین(دقت کنین باید return-ش کنین)

@app.route('/')
def one():
    return render_template('Home.html')

اگر میخواستین یه متنو پرینت کنین فقط کافیه اون متن رو ریترن کنین، حتی میتونین فایل html رو به صورت متنی هم ریترن کنین، پس چرا از رندر تمپلیت استفاده میکنیم؟

Flask از یک موتور تمپلیت استفاده میکنه به اسم jinja این فانکشن رندر تمپلیت کد های جینجا رو ترجمه میکنه که به اونم میرسیم

کد های جینجا برای فلاسک، عین خود تمپلیت انجین django هست و تا جایی که من دیدم کوچک ترین تفاوتی ندارن

خب حالا باید برنامه رو ران کنیم

2 تا راه داریم، کد Flask run رو بزنیم. که بعد از هر تغییر، باید دوباره سرور رو ریستارت کنیم

یا این کارو کنیم.

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def one():
    return render_template('Home.html')

if __name__ == '__main__':
    app.run(debug=True, port=4005)

مقادیری که به run دادم اختیاری هستن، پورت که معلومه چیه، دیباگ هم میگه که اگر دربرنامه تغییر دادم، سرور ریستارت بشه

خب، منتظر قسمت بعد این مجموعه باشن

 

 

 

پ.ن: کاور این پست را Adobe XD ساختم، محض اطلاع کسانی که دوست دارن بدونن(مثل خودم!)

این محتوا آموزنده بود؟
back endpythonطراحی سایت

sokan-academy-footer-logo
کلیه حقوق مادی و معنوی این وب‌سایت متعلق به سکان آکادمی می باشد.