Страница не найдена (404) в Django Output

my url.py

urlpatterns = [
    path("", views.index, name="blogHome"),
    path("blogpost/<int:id>/", views.blogpost, name="blogHome")
]

my views.py

django.shortcuts import render
from .models import Blogpost

# Create your views here.

def index(request):
    return render(request, 'blog/index.html')

def blogpost(request, id):
    post.Blogpost.objects.filter(post_id = id)[0]
    print(post)
    return render(request, 'blog/blogpost.html')

my models.py

from django.db import models

class Blogpost(models.Model):
    post_id = models.AutoField(primary_key=True)
    title = models.CharField(max_length=50)
    head0 = models.CharField(max_length=500, default="")
    chead0 = models.CharField(max_length=10000, default="")
    head1 = models.CharField(max_length=500, default="")
    chead1 = models.CharField(max_length=10000, default="")
    head2 = models.CharField(max_length=500, default="")
    chead2 = models.CharField(max_length=10000, default="")
    pub_date = models.DateField()
    thumbnail = models.ImageField(upload_to='blog/images', default="")

    def __str__(self):
        return self.title

Ошибка

Ошибка изображения, которое я вижу в выводе

Ошибка в cmd

Не найдено: /blog/blogpost

[21/Jun/2022 12:29:33] "GET /blog/blogpost HTTP/1.1" 404 2678

Текущая ошибка означает, что Django не находит ничего с маршрутом blog/blogpost, это потому, что вы также определили id для передачи в маршруте, поэтому любезно попробуйте http....blog/blogpost/1/ любой id, который вы можете дать.

Также id обычно используется для получения одного объекта, и вы выполняете фильтрацию по нему. Я думаю, вам следует использовать get_object_or_404, если вы хотите получить один объект.

Как @lvanStarostin указано в комментарии выше, шаблоны URL также должны иметь уникальные имена. Вам следует изменить одно из имен.

Note: Модели - это классы python, поэтому они должны быть написаны в PascalCase, поэтому вы можете изменить имя вашей модели на BlogPost из Blogpost.

Вернуться на верх