از Pista Academy حمایت کنید
خلاصه آموزشی
مرور سریع مفاهیم اصلی پیش از تماشای کامل یا برای جمعبندی بعد از آموزش.
در جلسه ششم دوره جامع فریم ورک FastAPI، مدرس به بررسی و پیادهسازی ولیدیشن در این فریم ورک میپردازد. ابتدا از کتابخانه پایدنتیک برای انجام ولیدیشن استفاده میشود و یک کلاس پروکسی ایجاد میگردد. سپس به پیادهسازی ولیدیشن برای فیلدهای مختلف مانند تایتل، نویسنده، دسکریپشن، ریتینگ و آیدی میپردازد. همچنین به چک کردن یونیک بودن آیدی و نحوه تولید آیدی خودکار در صورت عدم ارائه آیدی توسط کاربر پرداخته میشود. در نهایت، اهمیت ارائه راهنما برای کاربران در سوگر نیز مورد توجه قرار میگیرد. در این بخش، مدرس همچنین یک مثال عملی ارائه میدهد که شامل ایجاد مدل کانفیگ، نوشتن اگزمپل برای کاربر و نمایش آن در صفحه اصلی است.
نکات کلیدی
استفاده از کتابخانه پایدنتیک برای انجام ولیدیشن در FastAPI
پیادهسازی ولیدیشن برای فیلدهای مختلف و چک کردن یونیک بودن آیدی
سیستم به طور خودکار آیدی ایجاد میکند اگر ارائه نشود
ایجاد مدل کانفیگ و نمایش یک اگزمپل برای کاربر در FastAPI
پرسشهای رایج
پاسخ کوتاه و مستقیم به پرسشهایی که معمولاً هنگام یادگیری این موضوع مطرح میشوند.
برای انجام ولیدیشن در FastAPI، از کتابخانه پایدنتیک استفاده میشود و یک کلاس پروکسی ایجاد میگردد.
در صورت عدم ارائه آیدی توسط کاربر، سیستم آن را به طور خودکار ایجاد میکند.
یک مثال عملی ارائه شده است که شامل ایجاد مدل کانفیگ، نوشتن اگزمپل برای کاربر و نمایش آن در صفحه اصلی است.
آخرین بهروزرسانی محتوای متنی:
دوره جامع FastAPI از صفر تا استقرار در دنیای واقعی اگر دنبال ساخت APIهای حرفهای، سریع و امن با پایتون هستی، این دوره دقیقاً برای توست. قدمبهقدم از مبانی شروع میکنیم و تا پیادهسازی در محیط تولید (Production) پیش میرویم: از راهاندازی و طراحی Endpointها، پایگاهداده، احراز هویت و مجوزها، تستنویسی و مهاجرت دیتابیس تا نسخهسازی با Git و دیپلوی نهایی. این دوره چه چیزهایی بهت میدهد؟ شناخت کامل FastAPI و مزیتهایش (سرعت بالا، تایپهینتها، مستندسازی خودکار، async) ساخت RESTful APIهای تمیز و ماژولار با الگوهای حرفهای پیادهسازی لایههای Authentication & Authorization (مانند توکنهای JWT و نقشها) اتصال به پایگاهداده و آمادهسازی Database برای تولید به همراه مفاهیم اساسی Performance و ایمنی داده انجام مهاجرتهای دیتابیس (Alembic) بدون از دست رفتن داده Unit & Integration Testing برای اطمینان از کیفیت کد ساخت یک اپلیکیشن فولاستک با API بکاند FastAPI و یک فرانتاند رایج مدیریت نسخهها و گردشکار تیمی با Git Deploy امن و استاندارد روی سرور یا سرویسهای ابری 🎯 مخاطبان این دوره برنامهنویسان پایتون که میخواهند APIهای سریع و مقیاسپذیر بسازند بکاند دولوپرهایی که به دنبال Production-Ready FastAPI هستند دانشجویان یا فریلنسرهایی که میخواهند با نمونهکارهای واقعی، وارد بازار کار شوند پیشنیاز: آشنایی پایه با پایتون (متغیرها، توابع، ماژولها). بقیه را در خود دوره یاد میگیری. خروجی نهایی تو پس از دوره یک بکاند استاندارد و Production-Ready با FastAPI تسلط بر احراز هویت و مجوزها و الگوهای امنیتی رایج مهارت در مهاجرتهای دیتابیس و نگهداری داده در طول توسعه توانایی نوشتن تست برای اطمینان از کیفیت و کاهش ریسک تجربه ساخت یک پروژه فولاستک برای رزومه و پرتفولیو آمادگی برای دیپلوی و نگهداری سرویس در محیط واقعی چرا این دوره متفاوت است؟ پروژهمحور و کاملاً عملی؛ هر فصل یک خروجی ملموس میسازد تمرکز روی آنچیزی که در محیط تولید واقعاً به آن نیاز داری سادگی بیان + استانداردهای حرفهای = یادگیری سریع اما اصولی چطور از دوره استفاده کنم؟ ویدیوها را به ترتیب ببین و همزمان کدنویسی کن هر فصل یک Feature واقعی بساز در انتها آمادهای کدت را روی سرور/ابر بالا بیاوری اگر این دوره برات مفید بود، لطفاً لایک، سابسکرایب و کامنت یادت نره تا فصلهای جدیدتر و پروژههای بیشتر بسازیم 🙌
روش انجام بشه و هر دیتایی رو اجازه ندیم
که بیاد.
برای اینکه بخوایم کار ولیدیشنو انجام
بدیم از یه کتابخونه پایتون استفاده
میکنم به نام پایدنتیک
که
خیلی زیاد ازش استفاده میشه برای دیتا
ولیدیشن ابزار خوبی داره برای دیتا
ولیدیشن حالا نمیخوام وارد داکیومنتش بشم
و اینا ما قرا ازش استفاده کنیم و الان
بهتون میگم چهجوری قراره این کارو بکنیم
خب بیایم اینجا
عملاً پایدنتیک بچهها مثل یه پروکسی عمل
میکنه یعنی میاد
بین ریکوست پست و در حقیقت تو این کلاستون
بین کانستراکتور قرار میگیره و یه دیتا
ولیدیشنی برای شما انجام میده. اول بریم
ایمپورتش بکنم. میگم برو از
آیدنتیک ایمپورت بکن چیو بیس مدلو بیس مدلو
ما با بیس مدل کار داریم
بعد در ادامه میایم دقیقاً یه چیزی شبیه
همین کانستراکتوررو میسازیم دقیقاً یه
چیز شبیه کانستراکتوررو خب
یعنی میایم اینجا
بیس مدلم اینجا قرار میدم خب و اینو میفرستم براش میذارم اینجا
خب گفتم قراره مثل یه پروکسی عمل بکنه
یعنی ما اول دیتا رو میدیم به این یعنی
اینجا به جای اینکه دیتا رو بذاریم توی
بادی میدمش به این بوک ریکوسته
میگم تو تحویل بگیر
چون قراره یه دیتا ولیدیشنی انجام بدی چکش
بکنی چک و تک بکنی بعد تحویل کانستراکتور
بدی البته این اینجوری
خب
میتونیم الان یه چکم بکنیم ببینیم کار
میکنه یا نه میام اینجا دوباره
یه دونه
همین اشتباهه رو دوباره میارم
همینستم این دفعه این ۱۲ فقط برای اینکه تست بکنیم
این ۲۰۰
نه یه چیزی اشتباه نمیشم بچهها یه چیزی بهش اشتباه نوشتن
اشتباه ننوشتم بچهها اصلاً یه چیزی جا انداختم
نیو من گفتم این پروکسیه دیگه پس من من
تحویل اون میدم ازش بگیرم
میدمش به بوک ریکوست دات یه چیزی داره به نام
دامپ مودل دامپ میدمش به این خب توی
داکومنتش هست بعد نیو بوکو که بعد از
اینکه این تاییدش داده میدم به اپن بکنه
داخل بوکس خب یه بار دیگه بریم با هم
ببینیم
من یه ریفرش میدم اینو خ
بم چی رو
الان درست شد یه دست اجازه بدید
الان درست شد. خب حالا میام دوباره اینجا بذار یه ریکوست بزنیم کتابا رو بگیریم. خب
یه کتاب هفتی رو من درست کنم
فقط میخوام مطمئن شم که این کار میکنه با
این
فرض میکنم چیزیو تغییر نمیدم. اگزکیوت
۲۰۰ بیایم بالا
خب این داره کار میکنه پروکسی من داره
کار میکنه ولی ولیدیشنی همچنان انجام
نمیده حالا بریم سراغ پیادهسازی
ولیدیشنمون و بگیم که آقا تو وقتی دیتا
داره سمتت میاد یه ولیدیشنی باید روش
انجام بدی بعد اجازه بدی که بره سمت سرور
و ذخیره بشه اتفاقی که قراره بیفته
برای اینکه بخوام اینجا اینجا ولیدیشن انجام بدیم باید بگیم که یه چیزی رو لازم
داریم به نام فیلد
توی داکومنتش برید
و یه چیزی استفاده میکنه به نام فیلد
ببینم اینجا اگزمپلش نیست الان
حالا مهم نیست اینجا میگم که
تایتلم خب
اینکه استرینگ باید باشه اوکی که ولی باید
فیلدشم چک بشه و مینیموم طول تایتل باید
س۳ تا باشه یعنی کمتر سه کاراکتر نباشه
اسمش
همینو برای اسم نویسنده هم داریم
اینم نباید کمتر از یک باشه مثلاً
میذاریم
برای دسکریپشنم میذارم اینو بیشتر میکنم
میگم که مینیمومش باشه مثلاً یک
ماکسیمومش مثلاً باشه ۱۰۰ کاراکتر اینکه بیشتر از ۱۰۰ کاراکتر اجازه نداری برای
ریتینگ یه ذره قضیه فرق میکنه میگم که
باید بزرگتر از گریتر دن صفر
و لا
لا
سیکس مثلاً کوچیکتر از ۶ باشه
بعد بزرگتر سه کوچیکتر ۶ باشه حالا ولیدیشنه چیکار میکنه؟ الان بریم یه تست
بکنیم با همدیگه
میایم اینجا
تو سوگر
این شیشه رو میا کپی میکنم میام این پایین
آیدی رو میدم هفت یه کتاب بعد ریتش چرا نیومده
چرا اینجوری کپی شد
ریتشو میدم منفی ش میخوام بم ببینم ذخیره میشه یا نه اینم میدم ۷
خطا داد نگاه کنید ۴۲۲ داد و در حقیقت نرفت اینجا نگاه کنید اینا آ۶ میگه اینپوت
باید بزرگتر از صفر باشهش
قشنگ خطا رو میگه بهمون بچهها دیتیلشو و طبیعتاً اینجا هم هیچ اتفاقی نیفتاده
ذخیره نشده این میشه این ولیدیشنی که برا
ما داره انجام میده قبل از اینکه بخواد
دیتا بره سمت سرورمون حالا
یه نکته دیگه ریز دیگه هم وجود داره اینجا بنابراین که ما باید بگیم که مثلاً تایتل
و نویسنده و فلان و فلان اینا باید
ولیدیشن انجام بشه آیدی هم باید یونیک
باشه دیگه یعنی من نمیتونم د تا کتاب با
یه آیدی یکسان داشته باشم پس باید این رو
هم چک بکنم که قبل از اینکه بخوام دیتا رو
بفرستم باید چک بکنم که آیدیم یونیک باشه
حالا چهجوری اینو چک کنیم
برای این کار بچهها میام اینجا یه دونه فانکشن تعریف میکنم
فایند وک آیدی
خب به عنوان ورودی هم یه دونه کتاب میگیره خب میگم اگر طول
کتابای من اسمشو آره این اگه طول کتابهای من بزرگتر از صفر بود یعنی یه کتابی داخل
آرایه من هست از قبل درسته در اون صورت
بگو که این کتاب جدیده که قراره بره ذخیره
بشه
آیدیش برابر باشه با
آرایه بوکس برو آخرین عضوشو پیدا کن به آیدیش یه دونه اضافه کن یعنی اگه مثلاً
من ۶ تا کتاب دارم آخرین کتابم میشه این
آیدیش میشه ۶ یه دونه اضافه میشه میشه ۷
این کتاب جدیده آیدیش میشه ۷
اما اگر هیچ کتابی داخل آرایهم نبود
اونوقت این کتاب جدیده که داره میاد آیدیش
بشه ی
و در نهایت
ریترن بکنه کتابه رو این چیکار میکنه بچهها این من میام
اینجا اینو میدم به این قبل از اینکه
اصلاً بخوام سمت پرویدیشنم بفرستم آیدیشو
یه مطمئن میشم که آیدیش منحصر به فرد میشه
اینجوری یعنی این کتابه رو به عنوان ورودی
میدم آیدیشو اینجا تغییر میدم اگه لازم
باشه بریم با هم یه چکش بکنیم
میذارم ۶ باشه این ریتو میکنم ی مثلاً اینم میکنم
علی قنبری خب الان انتظار دارم که اینو که
میفرستم بگی خب ۶ که قبلاً هست اصلاً
کاری به شیشه نداره یه کتاب جدید اومده
میخواد بره سمت سرورم ذخیره بشه میره تو
این فانکشن اول کتاب جدیده چون من قبلاً
من ۶ تا کتاب دارم میگه خیلی خب آیدی این
کتاب جدیده برابر باشه با ۶ به اضافه ۱ ۷
نگاه کنید شد ۷ فارغ از اینکه من چه آیدی دادم مهم نیست این خودش میره چک میکنه
آخرین آیدی که وجود داشته رو یه دونه بهش
اضافه میکنه میده به این کتاب جدیده اگرم
کتابی نباشه از قبل که آیدی یکو میده
بچهها اینو میشه به یه شکل دیگه هم نوشت یه ذره خوشگلتر میگم این کتاب جدید آیدیش
برابر باشه با ی اگر
طول
کتابام
برابر باشه با صفر یعنی کتابی نباشه در
غیر این صورت
برابر باشه
آخرین عضوش
آیدیش هرچی هست به اضافه ی میشه تو یه خط
نوشت اینو اینجوری خیلی خوشگلتره
و به نظرم این مدلی بنویسیم بهتره
نکته دیگه از ولیدیشن
خب اما نکته بعدی زمانی که کاربر من داره یه کتابی رو میفرسته اطلاعاتشو سمت من
امکان داره که اصلاً ندونه اصلاً آیدی آخر
من چیه و اینا میخوام خیلی درگیر آیدی
اصلاً نکنمش یعنی حتی اگر اینجا آیدی رو
وارد نکرده بود سخت نگیرم اینجا آیدی رو
نزده بود خب برای اینکه این اتفاق بیفته
اینجا بعد از این اینتیجره این اینتیجرو
برمیدارم یه چیزی اضافه میکنم به نام
آپشنال
چی میگه از اینست که باید ایمپورت بشه فکر کنم
درست شد میگم اگر آپشناله اگه اینت نبود
اگر آیدی نبود تو بذار نگران نباش چرا چون
اینجا باهاش به یه آیدی میدیم دلنگران
نباش بریم اینجا چک بکنیم
خب بذار من داکومنتو نگاه بکنم اینا آپشنالو وقتی داره استفاده میکنه
آ توی داکومنت میگه که این از تایپینگ باید بیاد
بذار من اینو پاک کنم
اینجا نگاه کنید خودش میگه که کویک فیکس داره
آها از تایپینگ من اشتباه اینجا داشتم تایپینگم پنتتیک میآوردم اوکی اشتباهم این
بود خب
الان درست شد میریم چک کنیم
انتظار دارم وقتی من آیدی رو هم پاس ندم
به
در حقیقت این ریکوست پستم
خودش یه آیدی درست بکنه دلیل اصلاً مسئله
الان پیش نیده بذار اینو من ران کنم
۲۰۰
یه آیدی ۷ خودش داد این حتی اگه من آیدی
رو پاس ندم مسئله پیش نمیاد خودش یه دونه
آیدی اینجا اختصاص میده اول میاد آیدی رو
میذاره نون چون آیدی رو پاس ندادم بعد
جلوتر که میره اینجا خودش یه آیدی بهش
اختصاص میده اینجا
ولی اول میکنه نان آیدی رو
و اما نکته آخر اینکه شما اینجا بچهها میتونید یه کار دیگه هم بکنید. میتونید
یه راهنمایی رو اضافه بکنید برای کسی که
داره از این سوگر استفاده میکنه. یه
راهنماست. چهجوری؟ مثلاً بیاید بگید که
اینجا برا آیدی اینجوری ننویسید. بنویسید که فیلد
یه دسکریپشن بنویسید.
مثلاً مینویسم که آیدی
ند
کرت زمان که داره کریت میشه اصلا نیاز
نیست و یه دیفالتم بهش میدم همون نون
از اینجا نگاه کنید تو سوگر
ایناشش نگاه کنید ایناش اینجا نشون میده ده یه حالت داکومنتور داره مثلاً اینجا
نشون میده میگه این توضیحاتی که من نوشتمو
میاره اینجا حتی میتونید یه سری یه
اگزمپل اینجا بذارید که بگه آقا طبق این
اگزمپله مثلاً تو بیا پر کن اینا رو اگه
میخوای چیزی بذاری چهجوری این کارو
میکنیم
اینجا بعد از این میام یه دونه چیزی اضافه
میکنم به نام مدل کانفیگ
جیسون اس اس کیما اکسترا
حالا میام مینویسم که مثلاً تایتل یه اگزمپل اینجا میخوام بنویسم برای کاربرم
انیو بوک
بعد یه دونه دونه نویسنده داره
این الان اونجا بهش نشون میده اینجا نگاه کنید
اینا اگزمپلش اومد میبینید این اگزمپلی
که اینجا من نوشتم میاد اینجا قرار
میگیره و حتی اینجا هم که میخوام بسازم
یه اگزمپل از قبل وجود داره چون آیدی
نذاشتم اینجا آیدی هم نمیاد نیاز هم نیست
آیدی رو خودش درست میکنه زمانی که بخواد
کتابو ذخیره کنه
اینم از این موضوع که ما میتونیم یه
در حقیقت داکومنتور اینجا درست بکنیم که
سوگر نشون بده بریم بیایم اداشو جلسه بعدی
صحبت کنیم فعلاً خداحافظ