আজকে আমাদের টার্গেট হচ্ছে একজন logged in ইউজার যেনো পোস্ট করতে পারে সেই ব্যাপার টা হ্যান্ডেল করে ফেলবো। তাইলে খেয়াল করে দেখো আমাদের post মডেল টা, সেখানে আমাদের user মডেল এর সাথে একটা বন্ডিং বা relationship আছে। সো আমরা যখন ব্লগ অ্যাড করতে যাবো তখন user এর যে পার্ট টা আছে সেখানে আমাদের currently logged in ইউজার কে বসাই দিবো।
from django.db import models
from categories.models import Category
from django.contrib.auth.models import User
# Create your models here.
class Post(models.Model):
title = models.CharField(max_length=50)
content = models.TextField()
category = models.ManyToManyField(Category) # ekta post multiple categorir moddhe thakte pare abar ekta categorir moddhe multiple post thakte pare
author = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
return self.title
অ্যাড পোস্ট এও আমরা সেম কাজ করবো যে logged in ইউজার ছাড়া অন্য কেউ যেনো add পোস্ট এর লিঙ্ক এ যেতে না পারে। সেজন্যে @login_required এই ডেকরেটর টা অ্যাড করে দিবো।
@login_required
def add_post(request):
if request.method == 'POST': # user post request koreche
post_form = forms.PostForm(request.POST) # user er post request data ekhane capture korlam
if post_form.is_valid(): # post kora data gula amra valid kina check kortechi
# post_form.cleaned_data['author'] = request.user
post_form.instance.author = request.user
post_form.save() # jodi data valid hoy taile database e save korbo
return redirect('add_post') # sob thik thakle take add author ei url e pathiye dibo
else: # user normally website e gele blank form pabe
post_form = forms.PostForm()
return render(request, 'add_post.html', {'form' : post_form})