Почему страница не найдена (404) при доступе к дочерней записи в отношении Onetomany в Django?

#python #django #django-models #django-views #django-templates

Вопрос:

Я работаю над небольшим проектом Django и создал множество взаимосвязей между двумя моделями(скажем, продуктами и подпродуктами). И мой проект содержит два URL-адреса, сначала для получения всех данных в таблице продуктов, а другая ссылка-для получения связанных продуктов, связанных с конкретным продуктом.

Я передаю идентификатор продукта из шаблона для просмотра следующим образом:-

 <a href='sub/{{ x.id }}'><img src="{{x.pic.url}}" alt="" class="card-img-top" height="200px"></a>
 

url.py :-

 urlpatterns = [
                  path('admin/', admin.site.urls),
                  path('home/', home_page_view, name='homepage'),
                  path('sub/<int:id>/', product_sub, name='relatedproducts'),
              ]   static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
 

просмотр функций:-

 def product_sub(request, id):
    var = Products.objects.get(id=id)
    querysets = Sub_Products.objects.filter(products=var)
    context = {
        "object_list": querysets
    }
    print(context)
    return render(request, "subproducts.html", context)
 

Теперь, когда я когда-либо нажимаю на ссылку с изображением, чтобы получить связанный проект, который я получаю Page not found (404) .

Точная Ошибка:-

 “C:UsersAdminPycharmProjectsecommerceprojectmediahomesub7” does not exist
 

Но если я использую оболочку для доступа к подпродуктам, я получаю желаемый результат.

Ответ №1:

Вместо этого используйте имена URL-адресов:

 <a href="{% url 'relatedproducts' id=x.id %}"><img src="{{x.pic.url}}" alt="" class="card-img-top" height="200px"></a>