ব্লগ প্ল্যাটফর্ম হলো এমন একটি ওয়েবসাইট যেখানে ব্যবহারকারীরা ব্লগ পোস্ট তৈরি, সম্পাদনা এবং মুছে ফেলতে পারে। Django ফ্রেমওয়ার্ক ব্যবহার করে একটি সাধারণ ব্লগ প্ল্যাটফর্ম তৈরি করা যায়। এখানে আমরা একটি ব্লগ প্ল্যাটফর্ম তৈরি করব যেখানে ব্যবহারকারীরা ব্লগ পোস্ট তৈরি করতে পারবেন, সেই পোস্টে মন্তব্য করতে পারবেন এবং পোস্টগুলো প্রদর্শন করতে পারবেন।
প্রয়োজনীয়তা
Python এবং Django।
Django ইনস্টল করতে টার্মিনালে এই কমান্ডটি চালান:
pip install django
ব্লগ প্ল্যাটফর্মের ফিচারস
- হোম পেজ: সকল পোস্টের তালিকা দেখাবে।
- পোস্টের বিস্তারিত: প্রতিটি পোস্টের বিস্তারিত দেখাবে এবং মন্তব্য করার অপশন থাকবে।
- নতুন পোস্ট তৈরি: নতুন ব্লগ পোস্ট তৈরি করার জন্য ফর্ম।
- পোস্ট এডিট এবং ডিলিট: পোস্ট সম্পাদনা ও মুছে ফেলার অপশন।
- মন্তব্য: প্রতিটি পোস্টে মন্তব্য করার অপশন।
ধাপ ১: Django প্রজেক্ট এবং অ্যাপ তৈরি করা
প্রথমে Django প্রজেক্ট তৈরি করুন এবং একটি blog অ্যাপ তৈরি করুন।
django-admin startproject blog_platform
cd blog_platform
python manage.py startapp blog
ধাপ ২: অ্যাপটি প্রজেক্টে যুক্ত করা
প্রজেক্টের settings.py ফাইলে INSTALLED_APPS-এর মধ্যে blog অ্যাপটি যুক্ত করুন।
# blog_platform/settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog', # Blog অ্যাপ যুক্ত করা
]
ধাপ ৩: মডেল তৈরি করা
Blog মডেল এবং Comment মডেল তৈরি করতে হবে যা ব্লগ পোস্ট এবং মন্তব্য সংরক্ষণ করবে।
# blog/models.py
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
class Post(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
date_posted = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
return self.title
class Comment(models.Model):
post = models.ForeignKey(Post, related_name='comments', on_delete=models.CASCADE)
author = models.CharField(max_length=100)
content = models.TextField()
date_posted = models.DateTimeField(default=timezone.now)
def __str__(self):
return f"Comment by {self.author} on {self.post}"
ধাপ ৪: মাইগ্রেশন ফাইল তৈরি করা এবং ডাটাবেস আপডেট করা
মডেলগুলিকে ডাটাবেসে সেভ করার জন্য মাইগ্রেশন তৈরি করে নিম্নোক্ত কমান্ডগুলো চালান:
python manage.py makemigrations
python manage.py migrate
ধাপ ৫: অ্যাডমিন প্যানেলে মডেল রেজিস্টার করা
অ্যাডমিন প্যানেলে মডেলগুলো ব্যবস্থাপনার জন্য admin.py ফাইলে মডেল রেজিস্টার করুন।
# blog/admin.py
from django.contrib import admin
from .models import Post, Comment
admin.site.register(Post)
admin.site.register(Comment)
ধাপ ৬: ভিউ তৈরি করা
views.py ফাইলে ভিউ তৈরি করুন যা হোম পেজ, পোস্টের বিস্তারিত এবং মন্তব্যের জন্য কাজ করবে।
# blog/views.py
from django.shortcuts import render, get_object_or_404, redirect
from .models import Post, Comment
from django.contrib.auth.decorators import login_required
from .forms import PostForm, CommentForm
def home(request):
posts = Post.objects.all()
return render(request, 'blog/home.html', {'posts': posts})
def post_detail(request, post_id):
post = get_object_or_404(Post, id=post_id)
comments = post.comments.all()
if request.method == "POST":
comment_form = CommentForm(request.POST)
if comment_form.is_valid():
comment = comment_form.save(commit=False)
comment.post = post
comment.save()
return redirect('post_detail', post_id=post.id)
else:
comment_form = CommentForm()
return render(request, 'blog/post_detail.html', {'post': post, 'comments': comments, 'comment_form': comment_form})
@login_required
def post_create(request):
if request.method == "POST":
form = PostForm(request.POST)
if form.is_valid():
post = form.save(commit=False)
post.author = request.user
post.save()
return redirect('home')
else:
form = PostForm()
return render(request, 'blog/post_form.html', {'form': form})
ধাপ ৭: ফর্ম তৈরি করা
forms.py ফাইলে পোস্ট এবং মন্তব্য করার জন্য ফর্ম তৈরি করুন।
# blog/forms.py
from django import forms
from .models import Post, Comment
class PostForm(forms.ModelForm):
class Meta:
model = Post
fields = ['title', 'content']
class CommentForm(forms.ModelForm):
class Meta:
model = Comment
fields = ['author', 'content']
ধাপ ৮: URL রাউটিং সেটআপ করা
প্রতিটি পেজের URL রাউটিং সেটআপ করুন।
# blog/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.home, name='home'),
path('post/<int:post_id>/', views.post_detail, name='post_detail'),
path('post/new/', views.post_create, name='post_create'),
]
প্রজেক্টের মূল urls.py ফাইলে blog/urls.py যুক্ত করুন।
# blog_platform/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls')), # Blog app URLs
]
ধাপ ৯: টেমপ্লেট তৈরি করা
১. templates/blog/home.html
<!DOCTYPE html>
<html>
<head>
<title>Blog Home</title>
</head>
<body>
<h1>Blog Home</h1>
<a href="{% url 'post_create' %}">Create New Post</a>
<hr>
{% for post in posts %}
<h2><a href="{% url 'post_detail' post.id %}">{{ post.title }}</a></h2>
<p>{{ post.content|slice:":100" }}...</p>
<small>Posted by {{ post.author }} on {{ post.date_posted }}</small>
<hr>
{% endfor %}
</body>
</html>
২. templates/blog/post_detail.html
<!DOCTYPE html>
<html>
<head>
<title>{{ post.title }}</title>
</head>
<body>
<h1>{{ post.title }}</h1>
<p>{{ post.content }}</p>
<small>Posted by {{ post.author }} on {{ post.date_posted }}</small>
<hr>
<h2>Comments</h2>
{% for comment in comments %}
<p><strong>{{ comment.author }}</strong>: {{ comment.content }}</p>
{% empty %}
<p>No comments yet.</p>
{% endfor %}
<hr>
<h3>Leave a Comment</h3>
<form method="post">
{% csrf_token %}
{{ comment_form.as_p }}
<button type="submit">Submit</button>
</form>
<hr>
<a href="{% url 'home' %}">Back to Home</a>
</body>
</html>
৩. templates/blog/post_form.html
<!DOCTYPE html>
<html>
<head>
<title>Create New Post</title>
</head>
<body>
<h1>Create New Post</h1>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Save</button>
</form>
</body>
</html>
ধাপ ১০: অ্যাপ্লিকেশন চালানো
অ্যাপ্লিকেশনটি চালাতে টার্মিনালে নিচের কমান্ড দিন:
python manage.py runserver
এরপর ব্রাউজারে http://127.0.0.1:8000/ এ গিয়ে ব্লগ প্ল্যাটফর্মটি দেখুন।
উপসংহার
এই ব্লগ প্ল্যাটফর্মে ব্যবহারকারীরা পোস্ট তৈরি করতে, সম্পাদনা করতে এবং মন্তব্য করতে পারবেন। Django দিয়ে আরও ফিচার যোগ করা সম্ভব যেমন:
- ইউজার রেজিস্ট্রেশন ও লগইন সিস্টেম।
- লাইক ও কমেন্ট ফিচার।
- ক্যাটাগরি ও ট্যাগ ব্যবহার।
এই প্রজেক্টটি Django-তে ওয়েব ডেভেলপমেন্ট শেখার জন্য একটি চমৎকার উদাহরণ।
Read more