亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Django Like Syste --> RedirectView 不重定向到帖子

Django Like Syste --> RedirectView 不重定向到帖子

慕沐林林 2023-07-18 17:48:00
我在嘗試弄清楚如何為我的 Django 博客實現點贊系統時遇到了問題。我有一個帖子詳細信息視圖和一個PostRedirectView。我希望重定向視圖獲取我查看的帖子的絕對 URL,并切換喜歡/不喜歡,因為我的喜歡系統是鏈接在我的 models.py 中的帖子的 ManyToManyField。這是相關代碼:views.pyclass PostDetailView(DetailView):    model = Post    template_name = 'blog/post_detail.html'    context_object_name = 'post'    def get_context_data(self, **kwargs):        data = super().get_context_data(**kwargs)        comments_connected = Comment.objects.filter(post_connected=self.get_object()).order_by('-date_posted')        data['comments'] = comments_connected        data['form'] = NewCommentForm(instance=self.request.user)        return data    def post(self, request, *args, **kwargs):        new_comment = Comment(content=request.POST.get('content'),                              author=self.request.user,                              post_connected=self.get_object())        new_comment.save()        return self.get(self, request, *args, **kwargs)class PostLikeRedirect(RedirectView):    def get_redirect_url(self, *args, **kwargs):        obj = get_object_or_404(Post, pk=self.kwargs.get('id'))        return obj.get_absolute_url()urls.py  path('post/<int:pk>/', PostDetailView.as_view(), name='post-detail'),  path('post/<int:pk>/like', PostLikeRedirect.as_view(), name='post-like'),models.pyclass Post(models.Model):    content = models.TextField(max_length=1000)    date_posted = models.DateTimeField(default=timezone.now)    author = models.ForeignKey(User, on_delete=models.CASCADE, related_name="users_who_authored")    like = models.ManyToManyField(settings.AUTH_USER_MODEL, blank=True, related_name="users_who_liked")    def __str__(self):        return f'{self.author} posts: {self.content[:8]}'    @property    def number_of_comments(self):        return Comment.objects.filter(post_connected=self).count()    def __str__(self):        return f'{self.author} posted'當我轉到 post/id(eg 2)/like 時收到的錯誤是 404 page not found 和錯誤消息No Post matches the given query.我知道該錯誤意味著什么,我只是無法查明確切的時間以及我沒有正確傳遞查詢的位置
查看完整描述

1 回答

?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

id您正在嘗試從 URL獲取,但它被定義為pk。所以,改變你的觀點


class PostLikeRedirect(RedirectView):

    def get_redirect_url(self, *args, **kwargs):

        obj = get_object_or_404(Post, pk=self.kwargs["pk"])

                                      ^^^^^^^^^^^^^^^^^^^^^

        return obj.get_absolute_url()


查看完整回答
反對 回復 2023-07-18
  • 1 回答
  • 0 關注
  • 165 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號