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

时间:2018-01-08 08:03:06

标签: django python-3.x

大家好,我是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'),
]

有人知道为什么我不能在博客上发帖子吗?

2 个答案:

答案 0 :(得分:0)

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

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

无论哪种方式,此网址都不在您的网址模式列表中,因此请务必添加路由到&#34;博客&#34;在你的模式中

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

答案 1 :(得分:0)

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

  

AttributeError at / 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-包']

     

服务器时间:周一,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'),
]