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

时间:2018-11-18 20:42:47

标签: python django

am使用Django 2.0,这就是问题所在 找不到页面(404) 请求方法:GET 要求网址:http://localhost:8000/blog/post-detail/ 提出者:blog.views.post_detail 没有帖子匹配给定查询。

这是博客/网址

from django.urls import path,include
from .import views

urlpatterns = [
    path('blog/',views.post_list,name="post_list"),
    path('blog/post-detail/',views.post_detail,name="post_detail"),

]

和views.py

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

# Create your views here.
def post_list(request):
    object_list=Post.objects.all()
    context={
        'object_list': object_list,
    }
    return render(request,"blog.html",context)

def post_detail(request,slug=None):
    post=get_object_or_404(Post,slug=slug)
    context={
       'post':post,
    }
    return render(request,"post_detail.html",context)

和post_detail.html

{% extends "base.html" %}
{% load static %}
{% block seo_title %}{% endblock %}
{% block seo_description %}{% endblock %}
{% block Content %}
<article>
  <div class="embed-responsive embed-responsive-16by9">
<img src="images/blog1.jpg" alt="" />
</div>
  <div class="post-content">

<h2>{{post.title}}</h2>
<div>
{{post.created}}  Author {{Post.user}}
<hr/>
<p>{{post.body}}</p>
</article>

{% endblock Content %}

任何人都可以帮助我解决这个唯一的问题,我必须在某些地方混淆这些问题 blog.html

<!-- Blog -->
<div class="blog">
  <div class="row">
    <div class="col-sm-8">

      <!-- Blog Post-->
{% for obj in object_list %}
    {% if obj.status == 'Published' %}
      <article>
        <div class="embed-responsive embed-responsive-16by9">
      <img src="images/blog1.jpg" alt="" />
      </div>
        <div class="post-content">

    <h2>{{obj.title}}</h2>
    <div>
    {{obj.created}}  Author {{obj.user}}
    <hr/>
    <p>{{obj.body}}</p>
    <a class="mtr-btn button-navy ripple" href= "{% url 'post_detail' slug= post.slug %}">Continue reading →</a><br>
    </div>
    </article>
    {% endif %}
{% endfor %}

2 个答案:

答案 0 :(得分:0)

视图post_detail(request,slug=None)用于查看帖子的详细信息。因此您的网址格式不正确:

path('blog/post-detail/<slug:slug>',views.post_detail,name="post_detail"),

要在模板中调用它,更简单正确的方法是:

<a class="mtr-btn button-navy ripple" href= "{% url 'post_detail' obj.slug %}">Continue reading →</a><br>
</div>

答案 1 :(得分:0)

#FOLLOW THIS PROCEDURE.I HOPE IT HELPS YOU OR ANY ONE ELSE IN THE FUTURE

# At blog/urls.py
from django.urls import path
from .views import (post_list, post_detail)


urlspatterns = [
    path('blog/', post_list, name='post-list'),
    path('<str:slug>/blog/post-detail/', post_detail, name='post-detail'),

]

#At blog/views.py
from django.shortcuts import render, get_object_or_404
from .models import Post


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

def post_detail(request, slug):
    posts = get_object_or_404(Post, slug=slug)
    template_name = blog/post_detail.html
    context = {'posts':posts}
    return render(request, template_name, context)


# At the template/blog/post_list.html
{% block content %}
    {% for post in posts %}
        <article>
            <div>      
                <small>{{ post.created_on|date:"F d, Y" }}</small>
                <h2><a href="{{ post.slug }}">{{ post.title }}</a></h2>
                <p >{{ post.body }}</p>
            </div>
        </article>
    {% endfor %}
{% endblock content %}


# At template/blog/post_detail.html
<article>
    <div>
        <small>{{ posts.created_on|date:"F d, Y" }}</small>     
        <h2>{{ posts.title }}</h2>
        <p>{{ posts.body }}</p>
    </div>
</article>
#The above code should fix the the issue properly.