Проблема: Я пытаюсь получить подробный вид (отдельное сообщение в блоге), поместив следующий URL в браузере:
http://127.0.0.1:8000/post/1/
Должно быть получено и отображено первое сообщение в блоге на экране, однако возникает следующая ошибка:
Page not found (404)
Request Method: GET
Request URL: http://127.0.0.1:8000/post/1/
Raised by: socialmedia.views.PostDetailView
No post found matching the query
Обновление , согласно комментарию Даниэля Роземана ниже. Я получаю сообщение об ошибке, в котором говорится, что у меня нет поста с идентификатором 1, но, очевидно, я не понимаю реализацию постов, поскольку я предполагал, что при создании поста ему автоматически присваивался идентификатор в БД. Было бы полезно, если бы решение содержало четкое объяснение того, чего мне не хватает в моем понимании здесь как новичка.
Я заглянул в админ, кликаю по сообщениям и нигде не могу найти идентификационный номер.
Я просмотрел код и, насколько я вижу, правильно создал представление, а также у меня есть маршрут (в URL), который должен вызывать представление.
Вопрос: Может кто-нибудь указать на ошибку, пожалуйста? Не могли бы вы также предоставить полезное объяснение, помогающее разобраться в этом конкретном примере (маршрутизация, сообщения с запросами и т. Д.)
Я смотрел на подобные вопросы и ответы, но не могу найти решение для этого. Похожий вопрос предполагал, что это может быть связано с администратором или маршрутами, но использовал регулярные выражения в urls.py, предлагая более старую версию Django, которая мне не нужна.
urls.py
#THIS IS THE SOCIAL MEDIA URLS ..not the root directory URLS
from django.contrib import admin
from django.urls import path
from . views import PostListView,PostDetailView
from . import views
urlpatterns = [
path('', PostListView.as_view(), name='socialmedia-home'),
path('post/<int:pk>/', PostDetailView.as_view(), name='post-detail'),
path('about/', views.about, name='socialmedia-about'),
]
views.py
from django.shortcuts import render
from .models import Post #import the Models Post
from django.views.generic import ListView,DetailView
from django.http import HttpResponse
# Create your views here.
class PostListView(ListView):
model = Post #what model to query in order to create the list
template_name = 'socialmedia/home.html' """<app>/<model>_<viewtype>.html
in this case would be socialmedia/post_detail.html
"""
context_object_name = 'posts'
ordering = ['-date_posted']
class PostDetailView(DetailView):
model = Post
def about(request):
return render(request,'socialmedia/about.html',{'title':'About'})
post_detail.html
{% extends "socialmedia/base.html" %}
{% block content %}
<article class="media content-section">
<img class="rounded-circle article-img" src="{{object.author.profile.image.url}}">
<div class="media-body">
<div class="article-metadata">
<a class="mr-2" href="#">{{ object.author }}</a>
<small class="text-muted">{{ object.date_posted|date:"F d, Y"}}</small>
</div>
<h2 class="article-title">{{ object.title }}</h2>
<p class="article-content">{{ object.content }}</p>
</div>
</article>
{% endblock content %}