Selamat datang kembali ke perjalanan saya membina apl blog menggunakan Django tanpa menggunakan ChatGPT. Minggu ini, saya menumpukan pada melaksanakan ciri utama untuk meningkatkan aplikasi blog saya. Saya menambah fungsi yang membolehkan pengguna membuat siaran, mengulas pada siaran dan menyukai siaran pengguna lain.
python manage.py startapp posts
Saya mula dengan mereka bentuk model Post. Model ini akan menyimpan catatan blog yang dibuat oleh pengguna:
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
Seterusnya, saya mencipta juga model Komen dan Suka untuk membolehkan pengguna meninggalkan ulasan dan suka pada siaran:
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}"
Saya tidak akan memasukkan templat juga. Saya mencipta pandangan untuk mencipta, menyenaraikan semua siaran dan memaparkan siaran individu:
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"), ]
Minggu ini, saya menghadapi cabaran dengan:
Walaupun menghadapi cabaran ini, saya belajar banyak tentang mengendalikan interaksi pengguna dan bekerja dengan ORM Django untuk mengurus perhubungan antara model.
Dan itu menjadikan Aplikasi Blog Mudah saya. Semak Github saya untuk mendapatkan butiran lanjut dan demo langsung apl itu.
Saya merancang untuk mencipta satu lagi projek Django untuk meningkatkan kemahiran dan pengetahuan saya.
Jika anda mempunyai sebarang idea tentang projek yang bagus untuk diusahakan atau kerjasama dalam projek Django, sila tinggalkan ulasan.
Nantikan lebih banyak kemas kini tentang perjalanan saya!
Atas ialah kandungan terperinci Minggu Mencipta Apl Blog Mudah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!