বাংলায় জ্যাঙ্গো

বাংলায় জ্যাঙ্গো টিউটোরিয়ালের Django Rest Framework অধ্যায়ের প্রথম পর্বে আপনাদেরকে স্বাগতম।

লক্ষ:

চলুন একটা NID ভ্যারিফিকেশন পোর্টাল তৈরী করা যাক। অর্থাৎ, প্রথমে এটা এপলিকেশন তৈরী করবো যেখানে আমাদের NID এর তথ্য থাকবে। একটা url থাকবে localhost:8000/nid/check/<nid-number> যেখানে রিকুয়েষ্ট পাঠালে আইডিটা ভ্যালিড কিনা যাচাই করবে। যদি এই নাম্বারের কোন NID থাকে তাহলে বলবে Valid, অন্যথায় Invalid.

তাহলে দেখলাম আমাদের এই প্রজেক্টের ২ টি পার্ট

১) NID তথ্য রাখার জন্য একটা  এপলিকেশন, যখানে NID তথ্য জমা রাখা যাবে এবং একটা url যার মাধ্যমে তথ্য যাচাই করা যাবে। এটাকে আমরা NID server বলতে পারি

২) একটা পোর্টাল যেখান থেকে NID server কে রিকুয়েস্ট করে তথ্য যাচাই করা যাবে।

১) NID server তৈরীঃ

NID server নামে একটি নতুন প্রজেক্ট তৈরী করি।

django-admin startproject nid_server

nid_server প্রজেক্টের মধ্যে একটি এপ তৈরী করি nid নামে

cd nid_server
python manage.py startapp nid

settings.py এ nid কে যুক্ত করি।NID তথ্য রাখার জন্য nid/models.py এ একটি মডেল তৈরী করি

class NidInfo(models.Model):
    nid_number = models.CharField(max_length=50)
    name = models.CharField(max_length=50)

    def__str__(self):
        returnself.name
admin.py এ ক্লাসটি যুক্ত করি
from .models import NidInfo

admin.site.register(NidInfo)
মাইগ্রেশন করি
python manage.py makemigrations

python manage.py migrate

superuser তৈরী করে, সার্ভার রান করি এবং এডমিন প্যানেলে কিছু NID তথ্য জমা করি। এখন একটি url তৈরী করতে হবে যেখানে কল করে যে কেউ NID নাম্বার যাচাই করতে পারবে। nid/views.py

from django.http import JsonResponse
from .models import NidInfo

def check_nid(request, nid_number):
    is_exist = NidInfo.objects.filter(nid_number=nid_number).exists()
    return JsonResponse({'status': is_exist})
exists() ম্যাথডটি True/False রিটার্ণ করবে। Response, ডাটাকে Json আকারে ইউজারের কাছে পাঠাবো, যেন ইউজার তার টেমপ্লেটে সহজে ব্যাবহার করতে পারেন। এজন্য JsonResponse ব্যাবহার করা হয়েছে।
nid/urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('check/<nid_number>', views.check_nid)
]

nid_server/urls.py

from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('nid/', include('nid.urls'))
]

ব্রাউজারে http://localhost:8000/nid/check/123456789 প্রবেশ করালে {“status”: true } অথবা {“status”: false } দেখতে পাবেন।

Django Rest Framework এর ব্যাবহারঃ

আমাদের অতি সাধারণ API প্রস্তুত। এখন আপনি যে কোন সার্ভার থেকে আপনি এপিআইকে কল করে ডাটা পেতে পারেন। কিন্তু আমাদের প্রস্তুতকৃত সার্ভারটি এখনো পূর্ণাঙ্গতা পায় নি। কারণ এভাবে কোন API তৈরী করলে অনেক সমস্যা থেকে যায়। যেমন স্টাটাস রিটার্ণ করা, সিকিউরিটি, অথেনটিকেশন ইত্যাদি। এখ সমস্ত কিছু যোগান দেয়ার জন্য তৈরী করা হয়েছে Django Rest Framework. যার সাহায্যে আপনি খুব সহজে  API তৈরী করতে পারবেন। আমাদের উপরিউক্ত কোডকেই আমরা এখন Django Rest Framework এর মাধ্যমে লিখবো।
প্রথমেই Django Rest Framework ইনস্টল করি
pip install djangorestframework
settings.py এর INSTALLED_APPS এ rest_framework যুক্ত করি
INSTALLED_APPS = (
    ...
    'rest_framework',
)
আমাদের ভিউ ফাংশনকে নিচের মত করে পরিবর্তন করি
from rest_framework.response import Response
from rest_framework.decorators import api_view
from .models import NidInfo

@api_view()
def check_nid(request, nid_number):
    is_exist = NidInfo.objects.filter(nid_number=nid_number).exists()
    return Response({'status': is_exist})

সাধারণ ভিউ কে api view এ রূপান্তার করার জন্য api_view ডেকরেটর ব্যাবহার করা হয়েছে এবং রেসপন্স কে রেস্ট এপিআই রেস্পন্স এ রূপান্তর করা হয়েছে। এখন আপনার ব্রাউজার রিলোড দিলে সম্পূর্ণ নতুন চেহারা দেখতে পাবেন।

২য় পর্বে আমরা একটি html টেমপ্লেট তৈরী করব, যেখান থেমে nid server কে কল করে তথ্য যাচাই করা যাবে।