"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > सरल ब्लॉग ऐप बनाने का सप्ताह

सरल ब्लॉग ऐप बनाने का सप्ताह

2024-07-29 को प्रकाशित
ब्राउज़ करें:863

Week  Creating Simple Blog App

परिचय

ChatGPT का उपयोग किए बिना Django का उपयोग करके एक ब्लॉग ऐप बनाने की मेरी यात्रा में आपका फिर से स्वागत है। इस सप्ताह, मैंने अपने ब्लॉग ऐप को बेहतर बनाने के लिए प्रमुख सुविधाओं को लागू करने पर ध्यान केंद्रित किया। मैंने एक कार्यक्षमता जोड़ी है जो उपयोगकर्ताओं को पोस्ट बनाने, पोस्ट पर टिप्पणी करने और अन्य उपयोगकर्ताओं की पोस्ट को पसंद करने की अनुमति देती है।

मैंने जो किया उसका विस्तृत विवरण यहां दिया गया है:

Django पोस्ट ऐप बनाएं

python manage.py startapp posts

पोस्ट मॉडल डिजाइन करना

मैंने पोस्ट मॉडल को डिज़ाइन करके शुरुआत की। यह मॉडल उपयोगकर्ताओं द्वारा बनाए गए ब्लॉग पोस्ट को संग्रहीत करेगा:

from django.db import models
from django.contrib.auth.models import User
from django.utils import timezone


class Post(models.Model):
    title = models.CharField(max_length=100)
    description = models.CharField(max_length=200, help_text="Excerpt of the post...")
    content = models.TextField()
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    publication_date = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return self.title

टिप्पणी और पसंद मॉडल डिजाइन करना

इसके बाद, मैंने उपयोगकर्ताओं को पोस्ट पर टिप्पणी छोड़ने और पसंद करने की अनुमति देने के लिए टिप्पणी और पसंद मॉडल भी बनाए:

class Comment(models.Model):
    post = models.ForeignKey(Post, related_name="comments", on_delete=models.CASCADE)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    content = models.TextField()
    created_at = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return f"Comment by {self.author} on {self.post}"


class Like(models.Model):
    post = models.ForeignKey(Post, related_name="likes", on_delete=models.CASCADE)
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    created_at = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return f"Like by {self.user} on {self.post}"

दृश्य बनाना

मैं टेम्प्लेट भी शामिल नहीं करूंगा। मैंने सभी पोस्ट बनाने, सूचीबद्ध करने और अलग-अलग पोस्ट प्रदर्शित करने के लिए दृश्य बनाए:

from django.shortcuts import render, redirect, get_object_or_404
from rest_framework import generics
from django.contrib.auth.decorators import login_required
from .serializer import PostSerializer
from .forms import *
from .models import *

def create_post(request):
    if request.method == "POST":
        form = PostForm(request.POST)
        if form.is_valid():
            newPost = form.save(commit=False)
            newPost.author = request.user
            newPost.save()
            return redirect("posts:my-posts")
    else:
        form = PostForm()
    return render(request, "create_post.html", {"form": form, "show_header": True})

@login_required
def myPosts(request):
    '''
    List the user created posts
    '''
    posts = Post.objects.filter(author=request.user)
    return render(request, "posts_list.html", {"posts": posts, "show_header": True})

def postDetails(request, pk):
    '''
    List all posts in the dashboard and display the comments and likes
    '''
    post = get_object_or_404(Post, pk=pk)
    comment = post.comments.all()
    likes = post.likes.count()
    user_has_liked = post.likes.filter(user=request.user).exists()

    if request.method == "POST":
        comment_form = CommentForm(request.POST)
        if comment_form.is_valid():
            comment = comment_form.save(commit=False)
            comment.post = post
            comment.author = request.user
            comment.save()
            return redirect("posts:post-detail", pk=post.pk)
    else:
        comment_form = CommentForm()
    return render(
        request,
        "main_post.html",
        {
            "post": post,
            "comments": comment,
            "comment_form": comment_form,
            "likes": likes,
            "user_has_liked": user_has_liked,
        },
    )

@login_required
def like_post(request, pk):
    '''
    Handle liking posts
    '''
    post = get_object_or_404(Post, pk=pk)
    like, created = Like.objects.get_or_create(post=post, user=request.user)
    if not created:
        like.delete()
    return redirect("posts:post-detail", pk=post.pk)

अगला एक पोस्ट ऐप में urls.py बनाना है

from django.urls import path
from .views import *

app_name = "posts"

urlpatterns = [
    path("createpost/", create_post, name="create-post"),
    path("post//", postDetails, name="post-detail"),
    path("post//like/", like_post, name="like-post"),
    path("myposts/", myPosts, name="my-posts"),
]

चुनौतियाँ और सीख

इस सप्ताह, मुझे चुनौतियों का सामना करना पड़ा:

  • लाइक बटन सुनिश्चित करना उपयोगकर्ताओं को एक पोस्ट को एक बार पसंद करने की अनुमति देता है।
  • पोस्ट विवरण दृश्य के भीतर टिप्पणियों के लिए फॉर्म सबमिशन बनाना।

इन चुनौतियों के बावजूद, मैंने उपयोगकर्ता इंटरैक्शन को संभालने और मॉडलों के बीच संबंधों को प्रबंधित करने के लिए Django के ORM के साथ काम करने के बारे में बहुत कुछ सीखा।

और यह मेरा सरल ब्लॉग ऐप बनाता है। अधिक जानकारी और ऐप के लाइव डेमो के लिए मेरा Github देखें।

अगले सप्ताह के लक्ष्य

मैं अपने कौशल और ज्ञान को बेहतर बनाने के लिए एक और Django प्रोजेक्ट बनाने की योजना बना रहा हूं।

यदि आपके पास कोई विचार है कि काम करने के लिए एक अच्छा प्रोजेक्ट क्या है या Django प्रोजेक्ट पर सहयोग क्या है, तो कृपया बेझिझक एक टिप्पणी छोड़ें।

मेरी यात्रा पर अधिक अपडेट के लिए बने रहें!

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/jjayfabor/week-2-creating-simple-blog-app-ie1?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए [email protected] से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3