ورقة مرجعية سريعة عن Flask
تطبيق أساسي
from flask import Flask, jsonify, request
app = Flask(__name__)
@app.route('/')
def home():
return jsonify({"message": "Hello World"})
if __name__ == '__main__':
app.run(debug=True, port=5000)
المسارات
@app.route('/api/items') # GET (الطريقة الافتراضية)
@app.route('/api/items', methods=['POST'])
@app.route('/api/items/<int:item_id>') # معامل في المسار
@app.route('/api/items/<string:name>')
بيانات الطلب
# جسم JSON
data = request.get_json()
name = data.get('name')
# معاملات استعلام URL: /api/items?page=1
page = request.args.get('page', default=1, type=int)
# معامل في المسار
item_id = request.view_args['item_id']
الاستجابات
return jsonify({"key": "value"}) # 200 OK (نجاح)
return jsonify({"error": "not found"}), 404 # رمز حالة مخصص
return jsonify({"created": True}), 201 # تم الإنشاء
المخططات (Blueprints) وتنظيم المسارات
# في routes.py
from flask import Blueprint
api = Blueprint('api', __name__)
@api.route('/chat', methods=['POST'])
def chat():
...
# في __init__.py
from .routes import api
app.register_blueprint(api, url_prefix='/api')
SQLAlchemy
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime, timezone
db = SQLAlchemy()
class Message(db.Model):
id = db.Column(db.Integer, primary_key=True)
content = db.Column(db.String(500), nullable=False)
sender = db.Column(db.String(20), nullable=False)
timestamp = db.Column(db.DateTime, default=lambda: datetime.now(timezone.utc))
# عمليات CRUD
db.session.add(message)
db.session.commit()
db.session.delete(message)
Message.query.all()
Message.query.filter_by(sender='user').all()
Message.query.get(id)
Message.query.order_by(Message.timestamp.desc()).all()
CORS
from flask_cors import CORS
CORS(app) # اسمح بكل المصادر
متغيرات البيئة
from dotenv import load_dotenv
import os
load_dotenv()
api_key = os.getenv('OPENAI_API_KEY')
التشغيل
python app.py
# أو
FLASK_APP=app.py flask run --debug