Django Rest Framework چیست ؟

Django Rest Framework چیست ؟

همانطور که میدانید فریمورک جنگو Django یکی از فریمورک های محبوب برای پیاده سازی بک اند در وبسایت میباشد و این فریمورک قدرتمند هر کاری

را که بخواهید برای شما انجام میدهد یکی از کار هایی که خیلی مورد نیاز اکثر پروژه ها و وبسایت ها است ایجاد api برای آنها است و فریمورک Django Rest Framework به شما این امکان را میدهد که در پروژه های جنگویی خود api هم ایجاد کنید 

مقالات پیشنهادی:

فریمورک جنگو چیست ؟ 

دوره های پیشنهادی:

آموزش رایگان فریمورک جنگو

Django Rest Framework چیست ؟ 

جنگو رست فریمورک (Django Rest Framework) با به اختصار DRF یک فریمورک برای پیاده سازی api در فریمورک Django میباشد که ساختار های آن بسیار شبیه به فریمورک جنگو است و این فریمورک روی یک پروژه جنگویی که از قبل ساخته شده است نصب میشود و این امکان را به پروژه شما میدهد که بتوانید در سریع ترین زمان ممکن api های قدرتمندی ایجاد کنید 

دوره های پیشنهادی :

آموزش رایگان Django Rest Framework | ایجاد api با جنگو 

Api چیست ؟

 قبل از هرچیزی که بخواهیم وارد دنیای جنگو رست فریمورک شویم باید با api آشنا باشیم  که مخفف کلمه Application Programing Interface یا همان رابط کاربردی برنامه نویسی است و به برنامه نویسان کمک میکند که محصولی که تولید کرده اند با سایر محصولات دیگر ارتباط برقرار کند و تبادل اطلاعات بین یک یا چند برنامه ساده تر بشود و هرکدام داده ها را با یک فرمت خاص دریافت کرده و به فرمتی که خودشان میخواهند به نمایش بگذارند و همچنین درصورت نیاز میتوانند داده ها را نیز تغییر دهند به عنوان مثال وبسایتی مثل instagram نیز برای ارسال اطلاعات به اپلیکیشن های موبایلی خود از api استفاده میکند و برنامه نویسان موبایل تنها با دسترسی به api آن داده ها را در نرم افزار خود مبادله میکنند ...

برای درک بهتر به تصویر زیر دقت کنید

how-apis-works-sunlearn.ir

خب همانطور که مشاهده میکنید api واسطی است بین سرور اصلی ما و دستگاه یا همان کلاینت ما که وقتی درخواستی از سمت کلاینت ما به api ارسال میشود api این درخواست را به سرور اصلی برده و  در آنجا پردازش های لازم انجام میشود و بعد درخواست کاربر به فرمت خاصی به سمت اپلیکیشن های ما ارسال میشود و در آن اپلیکیشن ها هرطور که مایل باشیم اطلاعات را به کاربر نمایش میدهیم یا میتوانیم همچنین اطلاعاتی نیز به سمت سرور ارسال کنیم که موجب تغییرات در دیتابیس سرور نیز بشود و با این کار ما میتوانیم یک بار یک بک اند را ایجاد کرده و بعد از آن به فرانت اند های مختلف یا بهتره بگم به اپ های مختلف ارسال کنیم داده ها را تا آن ها همانطور که میخواهند به کار بگیرند

نحوه ی کارکرد Django Rest Framework:

همانطور که در ابتدای مقاله گفتیم این فریمورک بر روی یک پروژه جنگویی از قبل ساخته شده نصب میشود  و نحوه ی عملکرد آن به این صورت است که وقتی درخواستی به سمت یک url ما ارسال میشود جنگو رست فریمورک در View چک میکند که آیا درخواست ارسال شده یک درخواست قابل قبول برای View ما هست یا خیر پس از تایید درخواست بنا به نیاز آن درخواست اطلاعاتی از درون دیتابیس واکشی میشود و پس از تبدیل کردن به فرمت قابل قبول برای ارسال از طریق Api به صورت Json از طریق یک Http Response به همراه دیتا های مورد نیاز و Status Code آن به کلاینت ما ارسال میشود

آشنایی با انواع  مهم ترین Http Request  ها در Api:

  • GET: برای دریافت اطلاعات از سرور استفاده میشود
  • POST: برای ارسال دیتا به سرورر معمولا ایجاد آبجکت در دیتابیس استفاده میشود 
  • DELETE: برای حذف کردن یک آبجکت از دیتابیس در سرور استفاده میشود 
  • PUT : برای آپدیت کردن یک آبجکت از دیتابیس شما در سرورر استفاده میشود

همانطور که در جنگو وقتی ما میخواستیم دیتایی به سمت سرور ارسال کنیم از متد POST کمک میگرفتیم و همچنین وقتی یک صفحه را لود میکردیم 

درواقع از متد  GET استفاده میکردیم

ایجاد Api در جنگو با استفاده از DRF:

حالا وقت آن رسیده که یک پروژه جنگو ایجاد کنیم و پس از نصب جنگو رست فریمورک بر روی آن Api حالا لازم برای خود را ایجاد کنیم 

در ابتدا یک فولدر ایجاد میکنیم و سپس به درون آن فولدر پیمایش میکنیم و پروژه جنگو خود را ایجاد میکنیم از طریق cmd اگر با نحوه ی ایجاد کردن

یک پروژه جنگو آشنا نیستید میتوانید از لینک مقاله ای که در ابتدا گذاشتیم استفاده کنید

mkdir django-project
cd django-project

پس از آن با استفاده از venv پایتون یک venv برای پروژه خود ایجاد میکنیم و آن را فعال میکنیم به ترتیب دستورات زیر  را وارد کنید

python venv venv
cd venv
cd Scripts
activate

پس از اکتیو کردن محیط ایزوله ی خود حال نوبت به نصب جنگو  و جنگو رست فریمورک(DRF)  و کتاب خوانه های مورد نیاز برای Django Rest میرسد

pip install django
pip install djangorestframework
pip install markdown
pip install django-filter

پس از نصب موارد مورد نیاز حال نوبت به ساخت پروژه جنگو و اضافه کردن Django Rest Framework به قسمت INSTALLED_APPS  پروژه  میباشد

 . django-admin startproject django_rest_project

با استفاده از دستور django-admin یک پروژه با نام django_rest_project ایجاد میکنیم و حال در قسمت settings.py این پروژه "rest_framework" را اضافه میکنیم 

add_rest_framework_to_settings.py

خب حال نوبت ایجاد کردن یک app برای api خود هستیم که من اسم اپ خودم را blog قرار میدهم

python manage.py startapp blog

بعد از ایجاد کردن اپ بلاگ باید آن را مطابق شکل بالا که جنگو رست را اضافه کردیم به تنظیمات پروژه خود قسمت اپ های نصب شده اضافه کنیم

create_blog_app_and_add_to_settings.py

خب در بخش  این باید مدل های مورد نیاز برای اپ بلاگ را در models.py ایجاد کنیم 

create_article_model

خب مدلی که برای Article ها طراحی کردیم به این شکل میباشد دقت کنید که چون اینجا یک فرایند تستی است مدل ما مدلی ناقص است و در پروژه های خود مدل های خود را به این صورت پیاده نکنید قطعا مدل مقالات باید فیلد های بیشتری اعم از دسته بندی و غیره داشته باشد 

حال نیاز است تا مدل خود را به admin.py اضافه کنیم تا بتوانیم در پنل ادمین مقاله ای ایجاد کنیم

add-blog-model-to-admin-panel

پس از ایجاد کردن مدل ها نوبت به ثبت کردن آن ها در دیتابیس و یا بهتره بگوییم انجام عملیات migration میباشد 

python manage.py makemigrations
python manage.py migrate

اگر یادتان باشد در ابتدای مقاله وقتی نحوه ی عملکرد رست فریمورک را بررسی میکردیم گفتیم که مدل های دیتابیس پروژه ی جنگویی ما باید به یک فرمت خاص تبدیل شوند که برای تبدیل شدن به داده های آن ها به صورت json با مشکل روبه رو نشوند به این عملیات میگویند نوشتن Serializer برای مدل های پروژه 

در ابتدا نیاز دارید تا یک فایل درون فولدر اصلی اپ خود به نام serializers ایجاد کنید و در آن serializer های خود را برای هر مدلی که در دیتابیس ساختیم بسازیم که جنگو رست فریمورک بتواند آبجکت ها یا همان داده های مدل های مارا به صورت json یا خروجی مورد نیاز به کاربر نشان دهد 

create-serializers.py

خب حال درون این فایل باید از serializer پیشفرض رست فریمورک استفاده کنیم و از طریق آن Serializer مورد نظر برای مدل خود را ایجاد کنیم

create_serializer_for_article

خب در این قسمت serializer مورد نیاز خودمان را  نوشتیم و همه ی فیلد های مدل article را انتخاب کردیم که در حروجی api ما نمایش داده شوند

پس از این مرحله نوبت به نوشتن view مورد نظر برای مدیریت api ما میباشد  وارد فایل view.py شوید و کد های زیر را قرار دهید 

create_view_for_api

چگونگی نوشتن یک Api با رست فریمورک:

خب در ابتدا باید موارد مورد نیاز برای نوشتن یک api با رست فریمورک را به درون فایل خود ایمپورت کنیم و پس از آن تابع مربوط به api خود را ایجاد کرده و درون آن یک کوئری به درون مدل مقالات زده و تمامی مقالات را واکشی کرده تا به کاربر نمایش دهیم و پس از واکشی کردن مقالات حال باید آن لیست مقالات را به serializer ی که ساختیم داده تا بتواند این مقالات را به فرمت قابل ارسال برای کاربر تبدیل کند و پس از آن یک Response که مربوط

به رست فریمورک است برمیگردانیم و به عنوان دیتا serailizer.data و به عنوان status کد status 200 را که از رست فریمورک ایمپورت کردیم میدهیم 

حال نیاز است تا تنظیمات مربوط به فایل urls.py را برای اپ بلاگ و همچنین url اصلی پروژه اضافه کنیم درون فولدر اصلی اپ بلاگ یک فایل به نام urls.py ایجاد کرده و کد های زیر را قرار میدهیم و api خود را به url مربوطه متصل میکنیم

add_urls_for_blog_app

حال وارد فولدر پروژه شوید و فایل urls.py django_rest_project را باز کنید و کد های زیر را اضافه کنید 

add_urls_for_django_rest_project

خب تبریک api شما اماده است حال نیاز است پروژه را ایحاد کرده و یک سوپر یوزر بسازید و پس از آن یک مقاله ایجاد کنید و خروجی پروژه را مشاده کنید

python manage.py createsuperuser
python manage.py runserver

پس از ایجاد یک superuser نیاز است تا وارد پنل ادمین به آدرس :http://127.0.0.1:8000/admin شوید و یک مقاله ایجاد کنید پس از ایجاد مقاله آدرس api خود را وارد کنید و خروجی شما به صورت زیر میباشد 

show_article_list_in_api

دقت داشته باشید ما در اینجا یک api ساختیم که داده های درون دیتابیس را به ما نشان بدهد

جمع بندی:

همانطور که مشاهده کردید جنگو رست فریمورک یک گزینه مناسب برای ایجاد api برای پروژه جنگویی شما میباشد و میتوانید خیلی راحت و به سرعت جنگو api های قدرتمندی ایجاد کنید و یک فریمورک کامل برای ایجاد api میباشد

نظرات

نظر خود را اینجا بگذارید

برای درح نظر ابتدا وارد شوید !