ভূমিকা
তুমি কি ফ্রিল্যান্সিং শুরু করতে চাও, কিন্তু কোথা থেকে শুরু করবে বুঝতে পারছ না? অথবা হয়তো কিছু প্রজেক্ট করেছ, কিন্তু ক্লায়েন্টের চাহিদা অনুযায়ী পূর্ণাঙ্গ CRUD অ্যাপ বানাতে পারছ না? তাহলে এই আর্টিকেলটি শুধু তোমার জন্যই। আজ আমরা শিখবো কীভাবে Django ও PostgreSQL দিয়ে একটি পূর্ণাঙ্গ CRUD (Create, Read, Update, Delete) অ্যাপ বানানো যায়, যা সরাসরি তোমার ফ্রিল্যান্স প্রজেক্টে ব্যবহার করতে পারবে। এই Django CRUD app tutorial Bangladesh সিরিজটি এমনভাবে সাজানো যাতে তুমি শুধু কোডিং শিখবে না, বরং বুঝবে কীভাবে একটি প্রফেশনাল অ্যাপ তৈরি করতে হয়।
প্রস্তুতি: পরিবেশ সেটআপ
প্রথমেই নিশ্চিত হও যে তোমার কম্পিউটারে Python, pip, এবং PostgreSQL ইনস্টল করা আছে। যদি না থাকে, তাহলে অফিসিয়াল সাইট থেকে ডাউনলোড করে নাও। এরপর একটি ভার্চুয়াল এনভায়রনমেন্ট তৈরি করো:
python -m venv myenv
source myenv/bin/activate # Linux/Mac
myenv\Scripts\activate # Windowsএবার Django ও PostgreSQL অ্যাডাপ্টার ইনস্টল করো:
pip install django psycopg2-binaryএকটি Django প্রজেক্ট ও অ্যাপ তৈরি করো:
django-admin startproject myproject
cd myproject
python manage.py startapp crudappPostgreSQL ডাটাবেস কনফিগারেশন
প্রথমে PostgreSQL-এ একটি ডাটাবেস তৈরি করো। টার্মিনালে psql চালিয়ে নিচের কমান্ডগুলো দাও:
CREATE DATABASE cruddb;
CREATE USER myuser WITH PASSWORD 'mypassword';
GRANT ALL PRIVILEGES ON DATABASE cruddb TO myuser;এবার myproject/settings.py ফাইলে ডাটাবেস কনফিগার করো:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'cruddb',
'USER': 'myuser',
'PASSWORD': 'mypassword',
'HOST': 'localhost',
'PORT': '5432',
}
}এছাড়া INSTALLED_APPS-এ 'crudapp' যোগ করতে ভুলো না।
মডেল তৈরি ও মাইগ্রেশন
একটি সাধারণ ব্লগ পোস্টের মডেল তৈরি করি। crudapp/models.py:
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.titleমাইগ্রেশন তৈরি ও প্রয়োগ করো:
python manage.py makemigrations
python manage.py migrateএখন PostgreSQL-এ crudapp_post টেবিল তৈরি হবে।
CRUD অপারেশনের জন্য ভিউ, ইউআরএল ও টেমপ্লেট
ভিউ তৈরি (views.py)
from django.shortcuts import render, redirect, get_object_or_404
from .models import Post
from .forms import PostForm
def post_list(request):
posts = Post.objects.all()
return render(request, 'crudapp/post_list.html', {'posts': posts})
def post_create(request):
if request.method == 'POST':
form = PostForm(request.POST)
if form.is_valid():
form.save()
return redirect('post_list')
else:
form = PostForm()
return render(request, 'crudapp/post_form.html', {'form': form})
def post_update(request, pk):
post = get_object_or_404(Post, pk=pk)
if request.method == 'POST':
form = PostForm(request.POST, instance=post)
if form.is_valid():
form.save()
return redirect('post_list')
else:
form = PostForm(instance=post)
return render(request, 'crudapp/post_form.html', {'form': form})
def post_delete(request, pk):
post = get_object_or_404(Post, pk=pk)
if request.method == 'POST':
post.delete()
return redirect('post_list')
return render(request, 'crudapp/post_confirm_delete.html', {'post': post})ফর্ম তৈরি (forms.py)
from django import forms
from .models import Post
class PostForm(forms.ModelForm):
class Meta:
model = Post
fields = ['title', 'content']ইউআরএল কনফিগারেশন (urls.py)
crudapp/urls.py:
from django.urls import path
from . import views
urlpatterns = [
path('', views.post_list, name='post_list'),
path('create/', views.post_create, name='post_create'),
path('update/<int:pk>/', views.post_update, name='post_update'),
path('delete/<int:pk>/', views.post_delete, name='post_delete'),
]প্রজেক্টের মূল urls.py-তে অন্তর্ভুক্ত করো:
from django.urls import include, path
urlpatterns = [
path('', include('crudapp.urls')),
]টেমপ্লেট তৈরি
crudapp/templates/crudapp/post_list.html:
<h1>All Posts</h1>
<a href='{% url 'post_create' %}'>Create New Post</a>
<ul>
{% for post in posts %}
<li>
<h2>{{ post.title }}</h2>
<p>{{ post.content }}</p>
<a href='{% url 'post_update' post.pk %}'>Edit</a>
<a href='{% url 'post_delete' post.pk %}'>Delete</a>
</li>
{% endfor %}
</ul>post_form.html:
<h1>{% if form.instance.pk %}Edit{% else %}Create{% endif %} Post</h1>
<form method='post'>
{% csrf_token %}
{{ form.as_p }}
<button type='submit'>Save</button>
</form>post_confirm_delete.html:
<h1>Delete Post</h1>
<p>Are you sure you want to delete '{{ post.title }}'?</p>
<form method='post'>
{% csrf_token %}
<button type='submit'>Yes, delete</button>
</form>বাস্তব উদাহরণ: একটি ব্লগ অ্যাপ
উপরের কোডগুলো ব্যবহার করে তুমি একটি পূর্ণাঙ্গ ব্লগ অ্যাপ তৈরি করতে পারো। ক্লায়েন্টের জন্য ব্লগ, টাস্ক ম্যানেজার, বা ইনভেন্টরি সিস্টেম – সবই CRUD-এর ভিত্তিতে কাজ করে। বাংলাদেশের ফ্রিল্যান্স মার্কেটে যেমন Upwork, Fiverr, অথবা স্থানীয় মার্কেটপ্লেসে এই দক্ষতা খুবই চাহিদাসম্পন্ন। তুমি যদি আরও শিখতে চাও, তাহলে আমাদের কোর্সগুলো দেখতে পারো।
সাধারণ সমস্যা ও সমাধান
- ডাটাবেস কানেকশন এরর: নিশ্চিত করো PostgreSQL সার্ভিস চলছে এবং
settings.py-তে সঠিক ক্রেডেনশিয়াল আছে। - মাইগ্রেশন এরর:
python manage.py makemigrationsএর পরpython manage.py migrateদিতে ভুলো না। - টেমপ্লেট নট ফাউন্ড: টেমপ্লেট ফোল্ডারের নাম
templatesএবং অ্যাপের নামের সাথে মিল আছে কিনা চেক করো।
উপসংহার
এই Django CRUD app tutorial Bangladesh আর্টিকেলটি অনুসরণ করে তুমি একটি বেসিক CRUD অ্যাপ তৈরি করতে পারবে। ফ্রিল্যান্সিং ক্যারিয়ারে এই দক্ষতা তোমাকে এগিয়ে রাখবে। আরও উন্নত ফিচার যেমন অথেনটিকেশন, API, বা ডিপ্লয়মেন্ট শিখতে আমাদের ব্লগ ভিজিট করো।
সাধারণ প্রশ্নোত্তর
প্রশ্ন ১: Django CRUD অ্যাপ তৈরি করতে কতদিন লাগে?
বেসিক CRUD অ্যাপ তৈরি করতে ২-৩ দিন যথেষ্ট, যদি Django ও PostgreSQL এর বেসিক জানো।
প্রশ্ন ২: PostgreSQL এর পরিবর্তে MySQL ব্যবহার করা যাবে?
হ্যাঁ, Django MySQL-ও সাপোর্ট করে। শুধু ENGINE পরিবর্তন করে 'django.db.backends.mysql' সেট করো।
প্রশ্ন ৩: ফ্রিল্যান্স প্রজেক্টে CRUD অ্যাপের ক্লায়েন্ট কেমন পাব?
Upwork, Fiverr, অথবা আমাদের কমিউনিটি থেকে ক্লায়েন্ট পেতে পারেন।
প্রশ্ন ৪: ডিপ্লয়মেন্টের জন্য কী কী জানা দরকার?
Heroku, PythonAnywhere, অথবা VPS সার্ভার ব্যবহার করতে পারো। ডিপ্লয়মেন্ট টিউটোরিয়াল আমাদের রিসোর্স পেজে আছে।
প্রশ্ন ৫: এই অ্যাপে ইউজার লগইন যোগ করা যাবে?
অবশ্যই, Django-র built-in অথেনটিকেশন সিস্টেম ব্যবহার করে সহজেই লগইন সিস্টেম যোগ করতে পারো।


