مقدمه ای بر برنامه نویسی وب با فلاسک
امروزه برنامه نویسی وب یکی از مهارتهای حیاتی برای توسعه دهندگان نرمافزار به شمار میرود. پایتون، به عنوان یکی از محبوبترین زبانهای برنامه نویسی، ابزارهای قدرتمندی برای توسعه اپلیکیشنهای تحت وب فراهم کرده است. فلاسک (Flask) یکی از فریمورکهای کوچک و سطح بالا برای توسعه سریع وباپلیکیشن ها با پایتون است که به علت سادگی و توسعه آسان، در میان توسعهدهندگان محبوبیت زیادی دارد.
در این مقاله، ابتدا با فلاسک و ویژگیهای آن آشنا میشویم، سپس گام به گام نحوه ساخت یک وبسایت پویا، اتصال به پایگاه داده، مدیریت فرم، انجام عملیات احراز هویت و نکاتی برای حرفهای شدن در برنامه نویسی وب با فلاسک را بررسی میکنیم.
فلاسک چیست و چرا انتخابش کنیم؟
فلاسک یک microframework برای پایتون است؛ یعنی فریمورکی است که هسته آن ساده، انعطافپذیر و فاقد اجزای اضافی است تا خودتان هر آنچه نیاز دارید را به پروژه اضافه نمایید. برخی ویژگیهای شاخص فلاسک:
- سادگی فراگیری و پیادهسازی
- سبک بودن و داشتن هسته کوچک
- قابلیت توسعه پذیری بالا
- مستندات قوی و جامعه پویا
- قابلیت انتخاب اجزای مختلف مانند دیتابیس/ORM، قالبها و …
این خصوصیات باعث میشود فلاسک برای پروژههای کوچک تا متوسط انتخاب مطلوبی باشد، اما با بهکارگیری افزونهها و معماری صحیح، امکان توسعه پروژههای بزرگ نیز میسر است.
شروع کار با فلاسک
نصب و آمادهسازی محیط توسعه
برای شروع کافیست Python و pip روی سیستم خود نصب باشد.
pip install flask
یکی از بهترین روشها استفاده از محیط مجازی (virtualenv) برای ایزوله کردن کتابخانههای پروژه است.
ساخت اولین وباپلیکیشن با فلاسک
یک فایل جدید به نام app.py
بسازید و کد زیر را در آن قرار دهید:
from flask import Flask app = Flask(__name__) @app.route('/') def home(): return 'سلام دنیا! به سایت فلاسک خوش آمدید.' if __name__ == '__main__': app.run(debug=True)
اکنون با اجرای برنامه:
python app.py
و باز کردن http://127.0.0.1:5000/
در مرورگر، پیام ‘سلام دنیا!…’ نمایش داده میشود.
ساختار پروژههای فلاسک
برای پروژههای واقعی، بهتر است ساختار منظمی رعایت گردد.
project_folder/ ├── app.py ├── static/ ├── templates/ └── requirements.txt
– پوشه static برای فایلهای css, js, image
– پوشه templates برای قالبهای html (جینجا2)
– فایل app.py حاوی کد اصلی اپلیکیشن
– و فایل requirements.txt برای مدیریت کتابخانههای مورد نیاز
قابلیتهای کلیدی فلاسک
تعریف مسیرها (Routing)
در فلاسک به راحتی میتوان مسیرهای مختلف وبسایت را تعریف نمود:
@app.route('/about') def about(): return 'درباره ما'
میتوانید متغیرها را نیز در مسیر داشته باشید:
@app.route('/user/') def profile(username): return f'پروفایل {username}'
استفاده از قالبها (Templates)
قالبهای HTML معمولا در پوشه templates قرار میگیرند. فلاسک از Jinja2 برای templating استفاده میکند.
فرض کنید فایلی به نام index.html
داریم:
<h1>صفحه اصلی</h1> <p>سلام، {{ name }}!</p>
و در app.py:
from flask import render_template @app.route('/') def home(): return render_template('index.html', name='کاربر عزیز')
مدیریت فرم ها و دادهها
برای دریافت اطلاعات از کاربر، فرمها اهمیت ویژهای دارند. میتوان با flask-wtf پیادهسازی سادهتر انجام داد، یا با ابزار خود فلاسک کار کرد:
from flask import request @app.route('/contact', methods=['GET', 'POST']) def contact(): if request.method == 'POST': name = request.form['name'] email = request.form['email'] return f'نام: {name}، ایمیل: {email}' return render_template('contact.html')
در قالب HTML:
<form method="post" action="/contact"> نام: <input type="text" name="name"><br> ایمیل: <input type="email" name="email"><br> <button type="submit">ارسال</button> </form>
اتصال به پایگاه داده در فلاسک
یک اپ واقعی باید بتواند دادهها را در پایگاه داده ذخیره کند و بازیابی نماید. رایجترین انتخابها sqlite، postgresql و mysql است. برای ساده سازی کار میتوان از Flask-SQLAlchemy بهره برد:
pip install flask_sqlalchemy
نمونه تعریف و استفاده:
from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy(app) class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True, nullable=False) email = db.Column(db.String(120), unique=True, nullable=False)
باید ابتدا دیتابیس را بسازید:
db.create_all()
و سپس میتوانید داده اضافه و جستجو کنید:
user = User(username='ali', email='ali@example.com') db.session.add(user) db.session.commit()
احراز هویت و مدیریت کاربران
یکی از پایههای یک وب اپلیکیشن، بخش لاگین و مدیریت احراز هویت است. افزونه Flask-Login محبوبترین راهکار است:
pip install flask_login
سپس مراحل پایه:
- تعریف مدل کاربر
- ایجاد فرم لاگین
- بررسی اعتبارسنجی اطلاعات ورود
- مدیریت نشست کاربری (session)
نمونه کد کوتاه:
from flask_login import LoginManager, login_user, login_required, logout_user, UserMixin login_manager = LoginManager() login_manager.init_app(app) class User(UserMixin, db.Model): ... @login_manager.user_loader def load_user(user_id): return User.query.get(int(user_id))
توسعه پذیری و افزونههای فلاسک
فلاسک هر آنچه نیاز دارید را به صورت افزونه ارائه میدهد:
- Flask-Mail : ارسال ایمیل
- Flask-Migrate : مدیریت migration دیتابیس
- Flask-RESTful : ساخت REST API
- Flask-Bcrypt : رمزنگاری رمز عبور
- Flask-Assets : مدیریت فایلهای استاتیک
هر زمان نیاز داشته باشید میتوانید بسته مورد نظر را به پروژه بیافزایید.
نکات حرفهای و بهترین تجربیات (Best Practices)
برای موفقیت در پروژههای وب با فلاسک:
- کدهای خود را ماژولار و تفکیک شده بنویسید
- از blueprints برای جداسازی بخشهای مختلف استفاده کنید
- کار با پایگاه داده را با ORM پیادهسازی نمایید
- سیستم قالب را ساده و تمیز نگه دارید
- امنیت (XSS, CSRF, SQL Injection) را جدی بگیرید
- از محیط مجازی جهت ایزوله کردن پروژه بهره ببرید
- پروژه را بر روی سرور مناسب (مثلا Gunicorn+Nginx) دیپلوی کنید
نتیجهگیری
فلاسک به عنوان یک فریمورک قدرتمند، اما ساده و ماژولار، این امکان را به توسعه دهندگان میدهد تا هم برای پروژههای کوچک و هم متوسط تا بزرگ، وب اپلیکیشنهایی حرفهای بسازند. جامعه قوی، افزونههای متعدد و مستندات خوب، یادگیری و استفاده از آن را آسان کرده است.
با کمی تمرین و رعایت نکات حرفهای، میتوانید با فلاسک هر نوع پروژه وبی از وبلاگ ساده تا portalها و REST API های پیچیده را بسازید. همین امروز شروع کنید و اولین وبسایت فلاسکی خود را توسعه دهید!