Heim > Artikel > Backend-Entwicklung > Woche zum Erstellen einer einfachen Blog-App
Willkommen zurück zu meiner Reise, eine Blog-App mit Django zu erstellen, ohne ChatGPT zu verwenden. Diese Woche habe ich mich auf die Implementierung wichtiger Funktionen zur Verbesserung meiner Blog-App konzentriert. Ich habe eine Funktion hinzugefügt, die es Benutzern ermöglicht, Beiträge zu erstellen, Beiträge zu kommentieren und die Beiträge anderer Benutzer zu liken.
python manage.py startapp posts
Ich habe mit dem Entwurf des Post-Modells begonnen. Dieses Modell speichert die von Benutzern erstellten Blogbeiträge:
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
Als nächstes habe ich auch die Modelle „Kommentieren“ und „Gefällt mir“ erstellt, damit Benutzer Kommentare und „Gefällt mir“-Angaben zu Beiträgen hinterlassen können:
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}"
Ich werde die Vorlagen nicht mit einbeziehen. Ich habe Ansichten zum Erstellen, Auflisten aller Beiträge und Anzeigen einzelner Beiträge erstellt:
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)
from django.urls import path from .views import * app_name = "posts" urlpatterns = [ path("createpost/", create_post, name="create-post"), path("post/<int:pk>/", postDetails, name="post-detail"), path("post/<int:pk>/like/", like_post, name="like-post"), path("myposts/", myPosts, name="my-posts"), ]
Diese Woche stand ich vor Herausforderungen mit:
Trotz dieser Herausforderungen habe ich viel über den Umgang mit Benutzerinteraktionen und die Arbeit mit Djangos ORM gelernt, um Beziehungen zwischen Modellen zu verwalten.
Und das macht meine einfache Blog-App aus. Weitere Details und eine Live-Demo der App finden Sie auf meinem Github.
Ich habe vor, ein weiteres Django-Projekt zu erstellen, um meine Fähigkeiten und Kenntnisse zu verbessern.
Wenn Sie eine Idee haben, an welchem Projekt Sie gut arbeiten oder an einem Django-Projekt zusammenarbeiten können, können Sie gerne einen Kommentar hinterlassen.
Bleiben Sie dran für weitere Updates zu meiner Reise!
Das obige ist der detaillierte Inhalt vonWoche zum Erstellen einer einfachen Blog-App. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!