Myrodis
Myrodis

Reputation: 75

Why am I getting error 404 in my django project when everything seems correct?

I have two apps in my Django project:basket and store. In root url files I configured the urls.py like this:

from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static


urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('store.urls', namespace='store')),
    path('basket/', include('basket.urls', namespace='basket')),

store/urls.py:

from django.urls import path

from . import views

app_name = 'store'

urlpatterns = [
    path('', views.all_products, name='all_products'),
    path('<slug:slug>/', views.product_detail, name='product_detail'),
    path('category/<slug:category_slug>/',
         views.category_list, name='category_list')
]

basket/urls.py:

from django.urls import path

from . import views

app_name = 'basket'

urlpatterns = [
    path('', views.basket_summary, name='basket_summary'),
    path('add/', views.basket_add, name='basket_add'),
]

I am getting an error: Page not found(404)

Request Method:GET

Request URL:http://127.0.0.1:8000/basket/

Raised by:store.views.product_detail

this is my store/views.py:

from django.shortcuts import get_object_or_404, render
from .models import *

def product_detail(request, slug):
    product = get_object_or_404(Product, slug=slug, in_stock=True)
    context = {
        'product': product,
    }

    return render(request, 'store/products/detail.html', context)

please help me solve this problem i've been stuck on this for a long time.

Upvotes: 2

Views: 933

Answers (1)

lord stock
lord stock

Reputation: 1201

Try this way if you want to avoid 404 error:

from django.shortcuts import get_object_or_404, render
from .models import *

    def product_detail(request, slug):
        try:
            product = Product.objects.get(slug=slug, in_stock=True)
            context = {
                'product': product,
            }
        except Product.DoesNotExist:
            raise ValidationError('Product Does not exist ')
    
        return render(request, 'store/products/detail.html', context

)

Upvotes: 2

Related Questions