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

আজকে আমরা একটা মজার এপ তৈরী করব। আমাদের পেজে বাংলাদেশের বিভাগগুলির নাম দেখাব এবং ওই বিভাগে ক্লিক করলে তার জেলাগুলো দেখাবে। এবং জেলাতে চাপলে ওই জেলা সম্পর্কে তথ্য দেখাবে।

পরিকল্পনাঃ আমরা নতুন একরটি এপ তৈরী করব। ১ম ধাপে জেলা এবং বিভাগের লিষ্ট দখানোর জন্য দুইটি মডেল দরকার। জেলা মডেলের মধ্য বলে দেব সে কোন বিভাগের অন্তর্গত । ২য় ধাপে জেলার বর্ননা তৈরীর জন্য আরেকটি মডেল তৈরী করব এবং এই বর্ননা কোন জেলার তা বলে দেব। তো কাজ শুরু করা যাক……

python manage.py startapp information

information নামে একটি নতুন এপ তৈরী করলাম।

INSTALLED_APPS এর মধ্যে information কে যুক্ত করি।

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog_post',
    'cost_management',
    'information',
]

information/models.py এ জেলা ও বিভাগের জন্য মডেল তৈরী করি

from django.db import models


class Divisions(models.Model):
    name = models.CharField(max_length=50)
    population = models.IntegerField()
    area = models.IntegerField()

    def __str__(self):
        return self.name


class Districts(models.Model):
    name = models.CharField(max_length=50)
    education_rate = models.IntegerField()
    population_density = models.IntegerField(blank=True, null=True)
    visited = models.BooleanField(default=False)
    division = models.ForeignKey(Divisions, on_delete=models.CASCADE)

    def __str__(self):
        return self.name

blank=True, null=True অর্থ আপনি যদি ফর্ম পুরন করার সময় population_density ফিল্ডটি ফাকা রাখতে পারবেন। visited ফিল্ডে BooleanField ব্যাবহার করা হয়েছে । আপনি জেলাটিতে পরিদর্শন করলে True , না করলে False ব্যাবহার করতে পারবেন। যদি কিছুই না দিতে চান তাহলে ডিফল্ট হিসেবে False বসাবে(default=False)division_name ফিল্ডটিতে ForeignKey ফিল্ড ব্যাবহার করেছি। এই জেলাটি কোন জেলার সদস্য তা বোঝাতে আমরা এই রিলেশনাল ফিল্ড ব্যাবহার করেছি। এছাড়াও জ্যাঙ্গো OnToOneField, ManyToManyField ব্যাবহার করে থাকে ।

বিস্তারিত দেখতে 

ডাটাবেজ তৈরী করার জন্য মাইগ্রেশন করি

python manage.py makemigrations
python manage.py migrate

এডমিন প্যনেল ব্যাবহার করে তথ্য যুক্ত করার জন্য admin.py Districts Divisions ক্লাস দুটি যুক্ত করি।

#informations/admin.py

from django.contrib import admin
from information.models import Divisions, Districts

admin.site.register(Divisions)
admin.site.register(Districts)

এখন এডমিন প্যানেলে(localhost:8000/admin) লগিন করে প্রথমে কিছু বিভাগ অতঃপর জেলা যুক্ত করি।

এডমিন পাতা কাষ্টমাইজ করা

বর্তমানে আমাদের এডমিন পাতায় শুধু জেলা বা বিভাগের লিষ্ট দেখাছে । কিন্ত আমরা যদি চাই নামের পাশে আন্যান্য ফিল্ড ও টেবিলের মত দেখায়। admin.ModelAdmin ক্লাস আমাদের সাজানোর কাজ করে দেবে। জেলা লিষ্ট কে টেবিলের মত দেখানোর জন্য নিচের কোড লিখি

information/admin.py

class DistrictAdmin(admin.ModelAdmin):
    list_display = ('name','division', 'visited','population_density')

একটি নতুন ক্লাস তৈরী করেছি যেটা admin.ModelAdmin ক্লাসকে ইনহেরিট করেছে। list_display এর মধ্যে আপনি যে ফিল্ডগুলো কলাম আকারে দেখাতে চান তা যুক্ত করি।

এখন admin.site.register(Districts) এর মধ্যে DistrictAdmin কে যুক্ত করি। আমরা যদি Divisions মডেলকে পরিবর্তন করতে চাই তাহলে admin.site.register(Divisions) এর মধ্যে নতুন ক্লাস প্রবেশ করাতে হবে।

from django.contrib import admin
from information.models import Divisions, Districts

class DistrictAdmin(admin.ModelAdmin):
    list_display = ('name','division', 'visited','population_density')

admin.site.register(Divisions)
admin.site.register(Districts, DistrictAdmin)

 

আজ এ পর্যন্তই, আরো পরিবর্তন করতে ডকুমেন্টেশন দেখুন। পরবর্তি পোষ্টে আমরা বিভাগ ও জেলা লিষ্ট তৈরী করব

পরবর্তি পোষ্টঃ জ্যাঙ্গো ফিল্টার  >>

1
Leave a Reply

avatar
1 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
1 Comment authors
Md Saiful Recent comment authors
  Subscribe  
newest oldest most voted
Notify of
Md Saiful
Guest
Md Saiful

Assalamualaikum vai, I am totally new in Programing language moreover Python. I am trying to learn Python basic. If I wanna learn Django (This is my target) what should I do? Could you tell me the sequence, please? Wanna mention that, I don’t know HTML-CSS