Страница не найдена (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