找不到页面404 No Blog匹配给定查询

时间:2019-02-18 07:53:26

标签: python django

  

找不到页面(404)请求方法:GET请求URL:     http://127.0.0.1:8000/like/?csrfmiddlewaretoken=UJ6I7mm2cjjSXK0MeuOLqm4E7OfMKTKtO461mCAsnTPdXT0UVw1z3JfMqijyIJAM&blog_id=   提出者:blog.views.like_post

     

没有Blog匹配给定查询。


我正在为博客应用程序创建一个喜欢的部分,并且此错误显示在下面是我的视图,模型和url文件


views.py

Enabled

models.py

from django.shortcuts import render,get_object_or_404
from django.views.generic import ListView
from .models import Blog

class BlogsList(ListView):
    model=Blog
    template_name='blog/home.html'
    context_object_name='blogs'
    ordering=['-date_posted']



def like_post(request):
    post= get_object_or_404(Blog, id=request.POST.get('blog_id'))
    post.likes.add(request.user)
    return HttpResponseRedirect(Blog.get_absolute_url())

urls.py

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

class Blog(models.Model):
    title=models.CharField(max_length=100)
    content=models.TextField()
    date_posted=models.DateTimeField(default=timezone.now)
    author=models.ForeignKey(User, on_delete=models.CASCADE)
    likes=models.ManyToManyField(User,related_name='likes',blank=True)
    def __str__(self):
        return self.title

1 个答案:

答案 0 :(得分:0)

您的查看功能// Remove saved data from sessionStorage sessionStorage.removeItem('Username'); 是这里的元凶。

应使用POST方法调用like_post并传递请求参数like_post。我看不到你在哪里做。

我建议您重写视图函数:

blog_id

,然后在def like_post(request, blog_id): post = get_object_or_404(Blog, id=blog_id) # the rest can stay unchanged 中更改以下行:

urls.py

收件人:

url(r'^like/$', views.like_post, name='like_post')

将新的path('<int:blog_id>/like/', views.like_post, name='like_post') 和旧的path混合起来对我来说看起来并不好。现在,您可以在URL中传递url,如果博客不存在,视图将小心返回404 NOT FOUND。