Почему моя страница Django не находится, хотя я создал экземпляр модели для этой страницы?
Подробности:
У меня есть приложение Django, в котором я пытаюсь создать динамическое представление, отображающее страницу с деталями для экземпляра модели на основе параметра URL. Я настроил следующее:
Код модели:
class Card(models.Model):
background_image_id = models.CharField(max_length=100)
border_id = models.CharField(max_length=100)
image = models.ImageField(upload_to='cards/')
number = models.IntegerField()
name = models.CharField(max_length=30)
subtitle = models.CharField(max_length=100)
title = models.CharField(max_length=200)
card_paragraph1 = models.TextField()
card_paragraph2 = models.TextField()
card_paragraph3 = models.TextField()
card_paragraph4 = models.TextField()
card_button_class = models.CharField(max_length=100)
card_detail_url = models.CharField(max_length=100, blank=True, null=True)
card_modal_class = models.CharField(max_length=100)
card_temple_url = models.CharField(max_length=100, blank=True, null=True)
quote = models.CharField(max_length=255)
background_modal_image_id = models.CharField(max_length=100)
modal_title = models.CharField(max_length=100)
View Code:
from django.shortcuts import render
from .models import Card
def card(request, name):
try:
# Attempt to retrieve the card with the given name
card = Card.objects.get(name=name)
except Card.DoesNotExist:
# If no card is found, render the placeholder template
return render(request, 'cards2/temples_placeholder.html')
else:
# If the card is found, render the card detail template
return render(request, 'cards2/card.html', {'card': card})
URL Code:
from django.urls import path
from . import views
urlpatterns = [
path('card/<str:name>/', views.card, name='card_detail'),
]
Выпуск:
Когда я пытаюсь получить доступ к URL-адресу типа http://127.0.0.1:8000/card/arepage/, я получаю ошибку 404, указывающую на то, что страница не может быть найдена. ("arepage" - это имя экземпляра моей модели)
Я подтвердил, что:
Экземпляр модели Card с name='arepage' существует в базе данных. Шаблон URL правильно определен, чтобы соответствовать card/str:name/. Вопросы:
Почему URL-адрес может не соответствовать представлению, хотя экземпляр модели существует? Как я могу отладить или исправить эту проблему, чтобы убедиться, что страница найдена правильно?
Я проверил ваш проект и понял, что вы не указали в вопросе ваш основной urls.py
.
Потому что если вы не зарегистрировали свой urls.py
из app.py в основном urls.py, то в этом случае ваш url card/whatever/
не будет зарегистрирован и вы получите 404.
Я полагаю, что название папки приложения cards
. Чтобы улучшить ситуацию, вам следует вручную зарегистрировать cards/urls.py
в главной urls.py
:
# project_settings_folder/urls.py
# whole text, with admin etc.
...
# end of your file:
from django.urls import include
urlpatterns += [
path('', include('cards.urls')),
]
BTW, попробуйте почитать про GCBV, это намного проще и понятнее, чем FBV. Подробнее здесь: https://docs.djangoproject.com/en/5.1/topics/class-based-views/