Итак, ошибка, с которой я сталкиваюсь. ПК не может быть распознан. Потому что на главной странице слишком много постов. Я пытался решить эту проблему, меняя pk на id, меняя модели комментариев многими способами. Но это бесполезно
Реальная причина в том, что я должен перейти к подробному обзору, чтобы страница могла легко обнаружить. О, смотрите, он здесь на пути к этой странице ('post //', PostDetailView.as_view (), name = "post-detail"), так что мы можем сохранить этот комментарий в специальном post.pk. Но я хочу, чтобы все было связано
NameError в / name 'pk' не определено
class PostListView(ListView, DetailView):
model = Post
template_name = "blog/home.html" # <app>/model>_viewtype>html
context_object_name = "posts"
paginate_by = 15
template = loader.get_template('blog/post_detail.html')
def get(self, request, *args, **kwargs):
posts = Post.objects.all().order_by("-id")
gallerys = Gallery.objects.all()
comments = Comment.objects.filter()
likes = Post.objects
post = request.POST.get(Post)
# cnc = Contact.objects.all()
today = timezone.now().date()
is_liked = False
# if posts.likes.filter(id = request.user.id).exists():
# is_liked = True
comment_form = CommentForm(request.POST or None)
context = { 'posts': posts, "likes": likes,"comment_form":comment_form, "comments": comments, "gallerys":gallerys, "today": today}
# return render(request, "blog/home.html")
return render(request, "blog/home.html", context)
def post(self, request, *args, **kwargs):
form = PostForm()
posts = Post.objects.all().order_by("-id")
data2 = Gallery.objects.all()
comments = Comment.objects.filter()
likes = Post.objects
today = timezone.now().date()
is_liked = False
comment_form = CommentForm(self.request.POST or None )
if comment_form.is_valid():
form.instance.author = request.user
post = form.save(commit = False)
content = request.POST.get("content")
# post = request.POST.get(Post)
post = get_object_or_404(Post, pk = pk)
comment = Comment.objects.create(post = post, author = request.user, content= content)
comment.save()
return render(request, "blog/home.html", {'posts': posts, "likes": likes,"comment_form":comment_form, "comments": comments, "today": today})
else:
comment_form = CommentForm()
return render(request, "blog/home.html", {'posts': posts, "likes": likes,"comment_form":comment_form, "comments": comments, "gallerys":gallerys, "today": today})
class Post(models.Model):
STATUS_CHOICES = {
("draft", "Draft"),
("published", "Published"),
}
author = models.ForeignKey(User, on_delete = models.CASCADE )
title = models.CharField(max_length= 100, null=True, blank=True, default="Başlık")
content = models.TextField(blank =True, null=True, default = "Enter your content")
.....
objects = models.Manager
def was_published_recently(self):
return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
def get_absolute_url(self):
return reverse("post-detail", kwargs={"pk": self.pk})
def save(self, *args, **kwargs):
self.slug = self.__str__()
return super(Post, self).save(*args, **kwargs)
#it will show not <Question: Question object (1)> but the authors name or title
def __str__(self):
return f"{self.pk}"
class Comment(models.Model):
post = models.ForeignKey(Post, on_delete = models.CASCADE)
author = models.ForeignKey(User,on_delete=models.CASCADE)
content = models.TextField(verbose_name='content', default="Başlık")
timestamp = models.DateTimeField(default=timezone.now)
# Name = models.CharField(max_length = 100, default="Başlık")
# Email = models.EmailField(max_length = 100)
# Body = models.TextField()
# Active = models.BooleanField(default = True)
# Parent = models.ForeignKey("self", on_delete = models. CASCADE, null = True, blank = True, related_name = "replies")
objects = models.Manager
def __str__(self):
return f"{self.pk}"
def get_absolute_url(self):
return reverse("blog:post-detail", kwargs={
'pk': self.pk
})
#blog app
from . import views
urlpatterns = [
path('', PostListView.as_view(), name ="blog-home"),
path('user/<str:username>', UserPostListView.as_view(), name ="user-posts"),
path('post/<int:pk>/', PostDetailView.as_view(), name ="post-detail"),
path('post/new/', PostCreateView.as_view(model=Post, success_url=('/')), name ="post-create"),
path('contact/', contact.as_view(), name ="blog-contact"),
url(r'^$', views.HomeView.as_view(), name='home'),
]