├── API_Ready_To_Deploy ├── requirements.txt ├── __pycache__ │ └── main.cpython-312.pyc ├── render.yaml └── main.py ├── code_Without_API.py ├── FastAPI_APP.py ├── README.md ├── Python_GUI_Desktop_Example.py └── HTML_Example.html /API_Ready_To_Deploy/requirements.txt: -------------------------------------------------------------------------------- 1 | fastapi 2 | uvicorn 3 | pydantic -------------------------------------------------------------------------------- /API_Ready_To_Deploy/__pycache__/main.cpython-312.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Pythonation/FastAPI_Tutorial/HEAD/API_Ready_To_Deploy/__pycache__/main.cpython-312.pyc -------------------------------------------------------------------------------- /API_Ready_To_Deploy/render.yaml: -------------------------------------------------------------------------------- 1 | services: 2 | - type: web 3 | name: fastapi-bmi 4 | env: python 5 | buildCommand: pip install -r requirements.txt 6 | startCommand: uvicorn main:app --host 0.0.0.0 --port $PORT 7 | envVars: 8 | - key: PYTHON_VERSION 9 | value: 3.9.0 -------------------------------------------------------------------------------- /code_Without_API.py: -------------------------------------------------------------------------------- 1 | 2 | def calculate_bmi(): 3 | weight = float(input("أدخل وزنك بالكيلوجرام: ")) 4 | height = float(input("أدخل طولك بالمتر: ")) 5 | bmi = weight / (height ** 2) 6 | 7 | if bmi < 18.5: 8 | message = "لديك نقص في الوزن، كُل أكثر" 9 | elif 18.5 <= bmi < 25: 10 | message = "لديك وزن طبيعي، حافظ عليه" 11 | elif 25 <= bmi < 30: 12 | message = "لديك زيادة في الوزن، تمرن أكثر" 13 | else: 14 | message = "أنت تعاني من السمنة، قم بمراجعة طبيب" 15 | 16 | print ("Your BMI: ",bmi) 17 | print(message) 18 | 19 | calculate_bmi() -------------------------------------------------------------------------------- /FastAPI_APP.py: -------------------------------------------------------------------------------- 1 | from fastapi import FastAPI , Query 2 | from pydantic import BaseModel 3 | from fastapi.middleware.cors import CORSMiddleware 4 | 5 | app = FastAPI() 6 | app.add_middleware(CORSMiddleware, 7 | allow_origins=["*"], allow_methods=["*"],allow_headers=["*"], 8 | ) 9 | class BMIOutput(BaseModel): 10 | bmi: float 11 | message: str 12 | 13 | @app.get("/") 14 | def Hi(): 15 | return {"message": "Marhaba python"} 16 | 17 | @app.get("/calculate_bmi") 18 | def calculate_bmi( 19 | weight: float= Query(... , gt=20,lt=200, description="الوزن بالكيلوغرام") , 20 | height: float= Query(..., gt=1, lt=3, description="الطول بالمتر") 21 | ): 22 | bmi = weight / (height ** 2) 23 | if bmi < 18.5: 24 | message = "لديك نقص في الوزن، كُل أكثر " 25 | elif 18.5 <= bmi < 25: 26 | message = "لديك وزن طبيعي، حافظ عليه." 27 | elif 25 <= bmi < 30: 28 | message = "لديك زيادة في الوزن، تمرن أكثر" 29 | else: 30 | message = "أنت تعاني من السمنة، قم بمراجعة طبيب" 31 | return BMIOutput(bmi=bmi,message=message) 32 | 33 | -------------------------------------------------------------------------------- /API_Ready_To_Deploy/main.py: -------------------------------------------------------------------------------- 1 | from fastapi import FastAPI, Query 2 | from pydantic import BaseModel 3 | 4 | # إعداد CORS للسماح بطلبات من متصفح الويب 5 | from fastapi.middleware.cors import CORSMiddleware 6 | 7 | app = FastAPI() 8 | 9 | app.add_middleware( 10 | CORSMiddleware, 11 | allow_origins=["*"], # يجب تحديد المجالات المسموح بها في الإنتاج 12 | allow_methods=["*"], 13 | allow_headers=["*"], 14 | 15 | ) 16 | 17 | class BMIOutput(BaseModel): 18 | bmi: float 19 | message: str 20 | image: str 21 | 22 | @app.get("/") 23 | def Hi(): 24 | return {"message": "Marhaba python"} 25 | 26 | @app.get("/calculate_bmi") 27 | def calculate_bmi( 28 | weight: float = Query(..., gt=20, lt=200, description="الوزن بالكيلوغرام"), 29 | height: float = Query(..., gt=1, lt=3, description="الطول بالمتر") 30 | ): 31 | bmi = weight / (height ** 2) 32 | 33 | if bmi < 18.5: 34 | message = "لديك نقص في الوزن، كُل أكثر" 35 | pic = "1" 36 | elif 18.5 <= bmi < 25: 37 | message = "لديك وزن طبيعي، حافظ عليه" 38 | pic = "2" 39 | elif 25 <= bmi < 30: 40 | message = "لديك زيادة في الوزن، تمرن أكثر" 41 | pic = "3" 42 | else: 43 | message = "أنت تعاني من السمنة، قم بمراجعة طبيب" 44 | pic="4" 45 | 46 | return BMIOutput(bmi=bmi, message=message,image=pic) 47 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 | ## 🚀 حوّل كود Python إلى تطبيقات رهيبة مع FastAPI! 5 | 6 | ### 🤯 هل تخيّل يومًا أن تُصبح أكوادك قلبًا نابضًا لتطبيقات ويب، موبايل، وحتى Desktop قوية؟ 7 | 8 | مع **FastAPI**، هذا ليس حُلمًا بل **واقع مُمكن!** 🔥 9 | 10 | هذا المشروع يُرافق **درسًا مُفصّلًا على YouTube** يُوضّح لك **خطوة بخطوة** كيف تُطلق العنان لإبداعك وتُحوّل أكواد Python إلى تطبيقات مُذهلة! 11 | 12 | ### ✨ ما الذي ستجده هنا؟ 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 |
`code_Without_API.py`:كود بايثون بسيط وهو الكود الذي سنحوله الى API.
`FastAPI_APP.py`:الـ API التي تم بناؤها في آخر المشروع (المشروع الذي تعلمنا بناءه).
`HTML_Example.html`:صفحة ويب بسيطة باستخدام HTML تتفاعل مع الـ API.
`Python_GUI_Desktop_Example.py`:مثال لتطبيق Desktop بواجهة رسومية باستخدام Python يتفاعل مع الـ API.
`/API_Ready_To_Deploy`:مجلّد يحتوي على API جاهزة للنشر على منصّات الاستضافة مثل Render.
36 |
37 | 38 | 39 | 40 | 41 | ### 💪 ما الذي ستتعلّمه في الفيديو؟ 42 | 43 | * **ما هي الـ API ولماذا هي مُهمّة؟** شرح مُبسّط حتى لو كنت مبتدئًا تمامًا! 44 | * **أساسيات FastAPI:** بناء API، تحديد المسارات، والرد على الطلبات. 45 | * **تمرير البيانات:** كيفيّة إرسال واستقبال البيانات من وإلى الـ API. 46 | * **التحقّق من البيانات:** التأكّد من صحّة البيانات الواردة لتجنّب الأخطاء. 47 | * **التوثيق التلقائي:** وثّق API الخاص بك بضغطة زر! 48 | * **دمج الـ API مع واجهات مُختلفة:** HTML، تطبيقات Desktop، ومثال حتى لـ Swift لـ iPhone! 49 | * **نصائح وحيل احترافية!** 50 | 51 | ### 🎬 رابط الفيديو: 52 | 53 | https://youtu.be/NcPQm2KkIWE 54 | 55 | ### 🔥 انضم إلى مُغامرتنا في عالم FastAPI! 56 | 57 |
58 |
59 | 60 | 61 | -------------------------------------------------------------------------------- /Python_GUI_Desktop_Example.py: -------------------------------------------------------------------------------- 1 | import tkinter as tk 2 | from tkinter import messagebox 3 | import requests 4 | 5 | def calculate_bmi(): 6 | weight = entry_weight.get() 7 | height = entry_height.get() 8 | 9 | if weight and height: 10 | try: 11 | response = requests.get(f'http://127.0.0.1:8000/calculate_bmi?weight={weight}&height={height}') 12 | data = response.json() 13 | result_text.set(f'BMI: {data["bmi"]:.2f}\nالرسالة: {data["message"]}') 14 | except Exception as e: 15 | messagebox.showerror("Error", "حدث خطأ، يرجى المحاولة مرة أخرى.") 16 | else: 17 | messagebox.showwarning("Input Error", "يرجى إدخال الوزن والطول.") 18 | 19 | # إنشاء النافذة الرئيسية 20 | root = tk.Tk() 21 | root.title("حساب مؤشر كتلة الجسم (BMI)") 22 | root.geometry("400x400") 23 | root.resizable(False, False) 24 | 25 | # تعيين الخطوط والألوان 26 | font_large = ("Cairo", 16) 27 | font_medium = ("Cairo", 12) 28 | font_small = ("Cairo", 10) 29 | bg_color = "#f8f9fa" 30 | fg_color = "#343a40" 31 | btn_color = "#007bff" 32 | btn_hover_color = "#0056b3" 33 | 34 | # تعيين الألوان الخلفية 35 | root.configure(bg=bg_color) 36 | 37 | # إنشاء عناصر الواجهة 38 | label_title = tk.Label(root, text="حساب مؤشر كتلة الجسم (BMI)", font=font_large, bg=bg_color, fg=fg_color) 39 | label_weight = tk.Label(root, text="أدخل وزنك بالكيلوغرام:", font=font_medium, bg=bg_color, fg=fg_color) 40 | entry_weight = tk.Entry(root, font=font_medium) 41 | label_height = tk.Label(root, text="أدخل طولك بالمتر:", font=font_medium, bg=bg_color, fg=fg_color) 42 | entry_height = tk.Entry(root, font=font_medium) 43 | result_text = tk.StringVar() 44 | label_result = tk.Label(root, textvariable=result_text, font=font_medium, bg="#e9ecef", fg=fg_color, wraplength=350, justify="center", padx=10, pady=10) 45 | 46 | # وظيفة تغيير لون الزر عند التحويم 47 | def on_enter(e): 48 | btn_calculate['background'] = btn_hover_color 49 | 50 | def on_leave(e): 51 | btn_calculate['background'] = btn_color 52 | 53 | btn_calculate = tk.Button(root, text="احسب BMI", font=font_medium, bg=btn_color, fg="white", command=calculate_bmi) 54 | btn_calculate.bind("", on_enter) 55 | btn_calculate.bind("", on_leave) 56 | 57 | # وضع العناصر في النافذة 58 | label_title.pack(pady=20) 59 | label_weight.pack() 60 | entry_weight.pack(pady=5) 61 | label_height.pack() 62 | entry_height.pack(pady=5) 63 | btn_calculate.pack(pady=20) 64 | label_result.pack(pady=10) 65 | 66 | # بدء تشغيل البرنامج 67 | root.mainloop() 68 | -------------------------------------------------------------------------------- /HTML_Example.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | حاسبة مؤشر كتلة الجسم 7 | 8 | 70 | 71 | 72 |
73 |

حاسبة مؤشر كتلة الجسم

74 | 75 | 76 | 77 |
78 | 79 |
80 |

ما هو مؤشر كتلة الجسم؟

81 |

مؤشر كتلة الجسم (BMI) هو مقياس يستخدم لتقدير ما إذا كان الشخص يتمتع بوزن صحي بالنسبة لطوله. يساعد هذا المؤشر في تقييم مخاطر الإصابة بأمراض معينة مرتبطة بالوزن.

82 |

كيفية تفسير النتائج:

83 |
    84 |
  • أقل من 18.5: نقص في الوزن
  • 85 |
  • 18.5 - 24.9: وزن صحي
  • 86 |
  • 25 - 29.9: زيادة في الوزن
  • 87 |
  • 30 فما فوق: سمنة
  • 88 |
89 |

تذكر أن مؤشر كتلة الجسم هو دليل عام فقط. استشر طبيبك للحصول على تقييم صحي شامل.

90 |
91 |
92 | 93 | 118 | 119 | --------------------------------------------------------------------------------