فلاسک: یک راهنمای جامع – جامعه dev

مقدمه
Flask یک چارچوب میکرو وب برای پایتون است که به گونه ای سبک و مدولار طراحی شده است و در عین حال انعطاف پذیری لازم برای ساخت برنامه های وب قوی را ارائه می دهد. این ماده به طور گسترده ای برای سادگی ، مقیاس پذیری و پشتیبانی گسترده جامعه از آن استفاده می شود. این راهنما شما را از اصول اولیه فلاسک به ویژگی های پیشرفته سوق می دهد و از درک کاملی از چارچوب اطمینان حاصل می کند.
فلاسک را با مثال بخوانید
1. فلاسک چیست؟
Flask یک چارچوب وب برای پایتون است که ابزارها ، کتابخانه ها و فناوری هایی را برای ساخت برنامه های وب فراهم می کند. بر خلاف Django ، که یک چارچوب وب تمام عیار با ویژگی های داخلی است ، Flask یک رویکرد مینیمالیستی را دنبال می کند و به توسعه دهندگان این امکان را می دهد تا در صورت لزوم ابزارهای خود را انتخاب کنند.
ویژگی های فلاسک:
- سبک وزن و ساده: با ORM ، احراز هویت یا پانل مدیر همراه نیست.
- ماژولار: ادغام پسوندها را طبق نیاز پروژه امکان پذیر می کند.
- انعطاف پذیر: از توسعه API آرام پشتیبانی می کند.
- الگوهای jinja2: برای ارائه صفحات HTML پویا ، الگوی قدرتمندی را فراهم می کند.
- مبتنی بر WSGI: از Werkzeug ، یک ابزار WSGI برای استفاده از درخواست استفاده می کند.
2. تنظیم فلاسک
نصب
برای شروع ، فلاسک را با استفاده از PIP نصب کنید:
pip install flask
ایجاد یک برنامه فلاسک ساده
یک فایل پایتون ایجاد کنید ، به عنوان مثال app.py
و کد زیر را بنویسید:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return "Hello, Flask!"
if __name__ == '__main__':
app.run(debug=True)
اجرای برنامه Flask
python app.py
به سمت http://127.0.0.1:5000/
در مرورگر خود برای دیدن خروجی.
3. مسیریابی در فلاسک
Flask عملکرد مسیریابی را برای نقشه برداری URL به توابع فراهم می کند.
@app.route('/about')
def about():
return "This is the about page."
مسیریابی پویا
@app.route('/user/ ')
def greet(name):
return f"Hello, {name}!"
مبدل های URL در فلاسک
فلاسک به مبدل های URL خاص نوع اجازه می دهد:
@app.route('/post/ ')
def show_post(post_id):
return f"Post ID: {post_id}"
با استفاده از چندین مسیر
@app.route('/contact')
@app.route('/support')
def contact():
return "Contact us at support@example.com"
4. الگوهای فلاسک با jinja2
Flask از Jinja2 برای ارائه محتوای پویا در HTML استفاده می کند.
ایجاد یک الگوی HTML
ایجاد a templates
فهرست و اضافه کردن index.html
داخل:
Home
Welcome, {{ name }}!
ارائه الگوی
from flask import render_template
@app.route('/welcome/ ')
def welcome(name):
return render_template('index.html', name=name)
با استفاده از ساختارهای کنترل در jinja2
{% for item in items %}
{{ item }}
{% endfor %}
الگوهای گسترده
ایجاد کردن base.html
:
{% block title %}My Site{% endblock %}
My Navigation Bar
{% block content %}{% endblock %}
در یک الگوی دیگر گسترش دهید:
{% extends "base.html" %}
{% block title %}Home{% endblock %}
{% block content %}
Welcome to my site!
{% endblock %}
5. فرم های رسیدگی و احراز هویت کاربر
برای رسیدگی به ورودی کاربر ، Flask فراهم می کند request
شیء.
from flask import request
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form['username']
return f"Welcome, {username}"
return ''''''
احراز هویت کاربر با Flask-Login
from flask_login import LoginManager, UserMixin, login_user, logout_user
login_manager = LoginManager()
login_manager.init_app(app)
class User(UserMixin):
pass
6. فلاسک با بانکهای اطلاعاتی (sqlalchemy)
Flask از ادغام با بانکهای اطلاعاتی با استفاده از SQLalchemy پشتیبانی می کند.
from flask_sqlalchemy import SQLAlchemy
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///data.db'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100))
def __repr__(self):
return f"{self.name}>"
واکشی داده ها از پایگاه داده
@app.route('/users')
def get_users():
users = User.query.all()
return {"users": [user.name for user in users]}
7. مفاهیم پس زمینه پیشرفته در فلاسک
پیاده روی میان افزار
@app.before_request
def before_request():
print("Before handling request")
کارهای پس زمینه با کرفس
from celery import Celery
app.config['CELERY_BROKER_URL'] = 'redis://localhost:6379/0'
celery = Celery(app.name, broker=app.config['CELERY_BROKER_URL'])
@celery.task
def background_task(x, y):
return x + y
حافظه پنهان با فلاسک
from flask_caching import Cache
app.config['CACHE_TYPE'] = 'simple'
cache = Cache(app)
@cache.cached(timeout=60)
@app.route('/cached')
def cached_view():
return "This is a cached response."
WebSockets با Flask-Socketio
from flask_socketio import SocketIO
socketio = SocketIO(app)
@socketio.on('message')
def handle_message(msg):
print('Received message:', msg)
پایان
Flask یک چارچوب قدرتمند است که انعطاف پذیری را برای توسعه همه چیز از صفحات وب ساده گرفته تا API های پیچیده فراهم می کند. با تسلط بر فلاسک ، توسعه دهندگان می توانند به طور مؤثر برنامه های مقیاس پذیر و قابل حفظ را بسازند. این راهنما همه چیز را از راه اندازی گرفته تا استقرار ، احراز هویت ، بانکهای اطلاعاتی ، میانی ، حافظه پنهان ، وب سایت و کارهای پس زمینه پوشش می دهد و پایه و اساس محکمی برای کار با فلاسک فراهم می کند.