【问题标题】:No Post matches the given query. Django没有帖子与给定的查询匹配。姜戈
【发布时间】:2018-01-08 08:03:06
【问题描述】:

大家好,我是 Django 的新手,我已经开始学习如何创建博客,一切正常,但是当我点击地址 http://127.0.0.1:8000/blog/ 上的帖子时,我收到了这个

重定向到地址>>http://127.0.0.1:8000/blog/2018/01/07/Django/

找不到页面 (404) 请求方法:GET 请求 URL: http://127.0.0.1:8000/blog/2018/01/07/Django/ 提出者: blog.views.post_detail

没有帖子匹配给定的查询。

这是views.py的代码:

from django.shortcuts import render, get_object_or_404
from .models import Post

def post_list(request):
    posts = Post.objects.all()
    return render(request,
                  'blog/post/list.html',
                  {'posts': posts})

def post_detail(request, year, month, day, post):
    post = get_object_or_404(Post, slug=post,
                             status='published',
                             publish__year=year,
                             publish__month=month,
                             publish__day=day)
    return render(request,
                  'blog/post/detail.html',
                  {'post': post})

urls.py

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^$', views.post_list, name='post_list'),
    url(r'^(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})/'\
        r'(?P<post>[-\w]+)/$',
        views.post_detail,
        name='post_detail'),
]

有人知道为什么我不能在博客上打开任何帖子吗?

【问题讨论】:

  • 我有同样的问题(通过示例使用 Django2)。你解决了吗?

标签: django python-3.x


【解决方案1】:

请考虑地址http://127.0.0.1:8000/blog/2018/01/07/Django/ 可能不是您要发布到的地址。

您可能想发帖到http://127.0.0.1:8000/blog,您将使用 POST 正文中的日期来保存您的帖子。

无论哪种方式,此网址都不在您的网址模式列表中,因此请确保在您的模式中添加一些路由到“博客”的内容

urlpatterns = [
    # ...
    url('blog/', views.detail, name='detail'),
]

【讨论】:

  • 现在当我打开并点击一个帖子时,我会收到如下错误:
【解决方案2】:

现在,当我在 http://127.0.0.1:8000/blog/ 上单击帖子时,我会收到如下错误:

AttributeError 位于 /blog/2018/01/07/Django/

模块'blog.views'没有属性'detail'

请求方法:GET 请求 URL: http://127.0.0.1:8000/blog/2018/01/07/Django/Django 版本:1.8.6 异常类型:AttributeError 异常值:

模块'blog.views'没有属性'detail'

异常位置:/root/Projekty/mysite/blog/urls.py in , 第 10 行 Python 可执行文件:/usr/bin/python3 Python 版本:3.5.2 Python 路径:

['/root/Projekty/mysite', '/usr/lib/python35.zip', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/usr/lib/python3.5/lib-dynload', '/usr/local/lib/python3.5/dist-packages', '/usr/lib/python3/dist-packages']

服务器时间:2018 年 1 月 8 日星期一 08:35:01 +0000

views.py 现在看起来像这样:

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^$', views.post_list, name='post_list'),
    url(r'^(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})/'\
        r'(?P<post>[-\w]+)/$',
        views.post_detail,
        name='post_detail'),
    url('blog/', views.detail, name='detail'),
]

【讨论】:

  • 来晚了;但这是因为您的views.py中没有“详细信息”
猜你喜欢
  • 2019-07-21
  • 2016-07-25
  • 1970-01-01
  • 2020-08-17
  • 2019-04-21
  • 2015-03-25
  • 1970-01-01
  • 2017-03-08
  • 2013-02-22
相关资源
最近更新 更多