[Python] Getting "Page not found (404) No Product matches the given query." error

Discussão em 'Python' iniciado por Stack, Setembro 30, 2024.

  1. Stack

    Stack Membro Participativo

    I've started getting this error after deleting all my products from my database (I did this because it was dummy data just for testing). When I runserver and go to localhost I see this error

    The error states that this issue was raised in "home.views.index" despite the fact that the products are not called on the home page. I feel like my app is looking for the products and crashing when it cant find them.

    here is the code for my app urls.py

    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('', include('home.urls')),
    path('admin/', admin.site.urls),
    path('products/', include('products.urls')),
    path('checkout/', include('checkout.urls')),
    path('bag/', include('bag.urls')),
    path('contact/', include('contact.urls')),
    ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)


    Here is my product/urls.py

    from django.urls import path
    from . import views
    urlpatterns = [
    path('', views.all_products, name='products'),
    path('<int:product_id>/', views.product_detail, name='product_detail'),
    ]


    Here is the code for products/views.py

    from django.shortcuts import render
    from .models import Product
    def all_products(request):
    products = Product.objects.all()

    context = {
    'products': products,
    }

    return render(request, "products/products.html", context )

    def product_detail(request, product_id):
    product = get_object_or_404(Product, pk=product_id)

    context = {
    'product': product,
    }

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


    here is the code for home/urls.py

    from django.urls import path
    from . import views

    urlpatterns = [
    path('', views.index, name='home')
    ]


    here is the code for home/views.py

    from django.shortcuts import render

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


    here is index.html


    {% extends "base.html" %}
    {% load static %}

    {% block content %}
    <body class="front bg-pattern-dark">
    <div class="body">
    <div role="main" class="main">
    <section class="highlight-shop grid-pro">
    <div class="container">
    <div class="row">
    <div class="col-xs-6 col-sm-4">
    <div class="cat-thumb-item cat-thumb-item-grid">
    <img alt="Autumn / Winter 2014" src="{% static '/images/adustable-dumbell.jpg' %}" class="img-responsive">
    <div class="cat-caption bg-color7">
    <h3><a href="#">Long Sleeve Shirts</a></h3>
    <p><a href="#">Shop now</a></p>
    </div>
    </div>
    </div>
    <div class="col-xs-6 col-sm-4">
    <div class="cat-thumb-item cat-thumb-item-grid">
    <img alt="Autumn / Winter 2014" src="{% static '/images/Bar.jpg' %}" class="img-responsive">
    <div class="cat-caption bg-color7">
    <h3><a href="#">Jean</a></h3>
    <p><a href="#">Shop now</a></p>
    </div>
    </div>
    </div>
    <div class="col-xs-6 col-sm-4">
    <div class="cat-thumb-item cat-thumb-item-grid">
    <img alt="Autumn / Winter 2014" src="{% static '/images/Bench.jpg' %}" class="img-responsive">
    <div class="cat-caption bg-color7">
    <h3><a href="#">Shirts</a></h3>
    <p><a href="#">Shop now</a></p>
    </div>
    </div>
    </div>
    <div class="col-xs-6 col-sm-4">
    <div class="cat-thumb-item cat-thumb-item-grid">
    <img alt="Autumn / Winter 2014" src="{% static '/images/Bumper-plate.jpg' %}" class="img-responsive">
    <div class="cat-caption bg-color7">
    <h3><a href="#">Bags</a></h3>
    <p><a href="#">Shop now</a></p>
    </div>
    </div>
    </div>
    <div class="col-xs-6 col-sm-4">
    <div class="cat-thumb-item cat-thumb-item-grid">
    <img alt="Autumn / Winter 2014" src="{% static '/images/Mat.jpg' %}" class="img-responsive">
    <div class="cat-caption bg-color7">
    <h3><a href="#">Watches</a></h3>
    <p><a href="#">Shop now</a></p>
    </div>
    </div>
    </div>
    <div class="col-xs-6 col-sm-4">
    <div class="cat-thumb-item cat-thumb-item-grid">
    <img alt="Autumn / Winter 2014" src="{% static '/images/Rack.jpg' %}" class="img-responsive">
    <div class="cat-caption bg-color7">
    <h3><a href="#">Accessories</a></h3>
    <p><a href="#">Shop now</a></p>
    </div>
    </div>
    </div>
    </div>
    </div>
    </section>
    </div>
    </div>
    </body>
    </html>
    {% endblock %}

    here is base.html


    {% load static %}
    <!DOCTYPE html>
    <html>
    <head>

    <!-- Basic -->
    <meta charset="utf-8">
    <title>AlfaRyse</title>
    <meta name="keywords" content="HTML5 Template" />
    <meta name="description" content="AlfaRyse">
    <meta name="author" content="pixelgeeklab.com">
    <base href="{% static '/' %}">

    <!-- Mobile Metas -->
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <!-- Web Fonts -->
    <link href='http://fonts.googleapis.com/css?family=Dosis:300,400,500,600,700' rel='stylesheet' type='text/css'>

    <!-- Vendor CSS -->
    <link rel="stylesheet" href="vendor/fontawesome/css/font-awesome.css">
    <link rel="stylesheet" href="vendor/owlcarousel/owl.carousel.css" media="screen">
    <link rel="stylesheet" href="vendor/owlcarousel/owl.theme.css" media="screen">
    <link href="vendor/owl-carousel/owl.transitions.css" rel="stylesheet" media="screen">
    <link rel="stylesheet" href="vendor/flexslider/flexslider.css" media="screen">
    <link rel="stylesheet" href="vendor/chosen/chosen.css" media="screen">
    <link rel="stylesheet" href="vendor/magnific-popup/magnific-popup.css" media="screen">

    <!-- Theme CSS -->
    <link rel="stylesheet" href="css/theme.css">
    <link rel="stylesheet" href="css/theme-animate.css">

    <!-- Style Switcher-->
    <link href="css/colors/default/style.css" rel="stylesheet" id="layoutstyle">

    <!-- Head libs -->
    <script src="vendor/modernizr/modernizr.js"></script>

    <!--[if IE]>
    <link rel="stylesheet" href="css/ie.css">
    <![endif]-->

    <!--[if lte IE 8]>
    <script src="vendor/respond/respond.js"></script>
    <script src="vendor/excanvas/excanvas.js"></script>
    <![endif]-->

    </head>
    <header id="header">
    <div class="header-top">
    <div class="container row">
    <a href="#offcanvas" class="uk-navbar-toggle hidden-lg" data-uk-offcanvas>
    <span class="sr-only">Toggle navigation</span>
    <i class="fa fa-bars"></i>
    </a>
    <div class="col-md-4">
    <a href="{% url 'home' %}">
    <img class="img-responsive" src="{% static '/images/AlfaRyse Logo.png' %}" alt="">
    </a>
    </div>
    <nav>
    <ul class="nav nav-pills nav-top nav-top-right">
    <li class="shopping-cart">
    <a href="#offcanvas-cart" data-uk-offcanvas><i class="fa fa-shopping-cart"></i> <span><span>{% if total %}
    ${{ total|floatformat:2 }}
    {% else %}
    $0.00
    {% endif %}</span></span></a>
    </li>
    </ul>
    </nav>
    <div class="navbar-collapse nav-main-collapse collapse">
    <nav class="nav-main">
    <ul class="nav nav-pills nav-main-menu">
    <li class="dropdown active">
    <a href="{% url 'home' %}" class="dropdown-toggle">Home</a>
    </li>
    <li class="dropdown active">
    <a href="{% url 'products' %}" class="dropdown-toggle">Product</a>
    </li>
    <li class="dropdown active">
    <a href="{% url 'contact' %}" class="dropdown-toggle">Contact Us</a>
    </li>
    </ul>
    </nav>
    </div>
    </div>
    </div>
    </header>
    <main>
    {% block content %}
    {% endblock %}
    <div id="offcanvas" class="uk-offcanvas">
    <div class="uk-offcanvas-bar">
    <ul id="main-menu-offcanvas" class="uk-nav-offcanvas">
    <li class="uk-parent uk-active">
    <a href="#">Home</a>
    </li>
    <li class="uk-parent">
    <a href="#">Products</a>
    </li>
    <li class="uk-parent">
    <a href="contact.html">Contact Us</a>
    </li>
    </ul>
    </div>
    </div>
    <div id="offcanvas-cart" class="uk-offcanvas">
    <div class="uk-offcanvas-bar uk-offcanvas-bar-flip">
    <div class="uk-panel">
    <h3>Cart</h3>
    <ul class="list-thumbs-pro">
    {% if bag_items %}
    {% for item in bag_items %}
    <li class="product">
    <div class="thumb-item">
    <div class="thumb-item-img">
    {% if item.product.image %}
    <a href="#"><img width="80" src="{{ item.product.image.url }}" alt="{{ item.product.name }}"></a>
    {% else %}
    <a href="#"><img width="80" src="{{ MEDIA_URL }}noimage.png" alt="{{ item.product.name }}"></a>
    {% endif %}
    </div>
    <div class="thumb-item-content">
    <h3><a href="#">{{ item.product.name }}</a></h3>
    <p class="product-price"><ins>${{ item.product.price }}</ins></p>
    </div>
    </div>
    </li>
    </ul>
    <ul class="list-inline cart-subtotals">
    <li class="cart-subtotal"><strong>Subtotal:</strong></li>
    <li class="price"><span class="amount"><strong>${{ total|floatformat:2 }}</strong></span></li>
    </ul>
    {% endfor %}
    {% endif %}
    <a href="{% url 'view_bag' %}" class="btn btn-dark btn-block">View Cart</a>
    <a href="shop-checkout.html" class="btn btn-primary btn-block">Go to Checkout</a>
    </div>
    </div>
    </main>
    <footer id="footer" class="bg-color6">
    <div class="container">
    <div class="row">
    <div class="col-md-3">
    <h4>Contact Us</h4>
    <p>Morbi accumsan ipsum velit. Nam nec tellus a odio tincidunt auctor</p>
    <address>
    To order: +12 345 6789<br>
    Client support: +12 987 6543<br>
    Email: <a href="mailto:pixelgeeklab@gmail.com">pixelgeeklab@gmail.com</a>
    </address>
    <ul class="social-icons">
    <li><a href="#" target="_blank" data-toggle="tooltip" data-placement="top" title="Facebook"><i class="fa fa-facebook"></i></a></li>
    <li><a href="#" target="_blank" data-toggle="tooltip" data-placement="top" title="Twitter"><i class="fa fa-twitter"></i></a></li>
    <li><a href="#" target="_blank" data-toggle="tooltip" data-placement="top" title="Google Plus"><i class="fa fa-google-plus"></i></a></li>
    <li><a href="#" target="_blank" data-toggle="tooltip" data-placement="top" title="Instagram"><i class="fa fa-instagram"></i></a></li>
    <li><a href="#" target="_blank" data-toggle="tooltip" data-placement="top" title="Flickr"><i class="fa fa-flickr"></i></a></li>
    </ul>
    </div>
    <div class="col-md-2">
    <h4>Categories</h4>
    <ul class="list-links">
    <li><a href="#">Men</a></li>
    <li><a href="#">Women</a></li>
    <li><a href="#">Accessories</a></li>
    <li><a href="#">Bestsellers</a></li>
    <li><a href="#">Special Products</a></li>
    <li><a href="#">Sale Off</a></li>
    </ul>
    </div>
    <div class="col-md-2">
    <h4>Useful links</h4>
    <ul class="list-links">
    <li><a href="#">About Us</a></li>
    <li><a href="#">Size guide</a></li>
    <li><a href="#">Postage + Delivery</a></li>
    <li><a href="#">Shipping & Returns</a></li>
    <li><a href="#">Privacy Policy</a></li>
    <li><a href="#">Returns + Exchangees</a></li>
    <li><a href="#">Terms + Conditions</a></li>
    </ul>
    </div>
    <div class="col-md-2">
    <h4>Latest Tweets</h4>
    <ul class="latest-tweets">
    <li>Nam nec tellus a odio tincidunt auctor a odio. Sed non <a href="http://pixelgeeklab.com" target="_blank">http://pixelgeeklab.com</a> <span class="tweet-date">2 days ago</span></li>
    </ul>
    </div>
    <div class="col-md-3">
    <div class="footer-copyright">
    <p><img src="images/logo-w.png" alt=""></p>
    <p>© 2014 Marvel. All Rights Reserved. Designed by <a href="http://pixelgeeklab.com" target="_blank">Pixelgeeklab.com</a>.</p>
    <ul class="card-icons">
    <li><a href="#" target="_blank" data-toggle="tooltip" data-placement="top" title="Paypal"><i class="fa fa-cc-paypal"></i></a></li>
    <li><a href="#" target="_blank" data-toggle="tooltip" data-placement="top" title="Mastercard"><i class="fa fa-cc-mastercard"></i></a></li>
    <li><a href="#" target="_blank" data-toggle="tooltip" data-placement="top" title="Visa"><i class="fa fa-cc-visa"></i></a></li>
    <li><a href="#" target="_blank" data-toggle="tooltip" data-placement="top" title="Discover"><i class="fa fa-cc-discover"></i></a></li>
    <li><a href="#" target="_blank" data-toggle="tooltip" data-placement="top" title="AMEX"><i class="fa fa-cc-amex"></i></a></li>
    </ul>
    </div>
    </div>
    </div>
    </div>
    </footer>
    <!-- Vendor -->
    <script src="vendor/jquery/jquery.js"></script>
    <script src="vendor/bootstrap/bootstrap.js"></script>
    <script src="vendor/jquery.validation/jquery.validation.js"></script>
    <script src="vendor/owlcarousel/owl.carousel.js"></script>
    <script src="vendor/flexslider/jquery.flexslider-min.js"></script>
    <script src="vendor/countdown/countdown.min.js"></script>
    <script src="vendor/chosen/chosen.jquery.min.js"></script>
    <script src="vendor/pricefilter/jquery.pricefilter.js"></script>
    <script src="vendor/masonry/imagesloaded.pkgd.min.js"></script>
    <script src="vendor/masonry/masonry.pkgd.min.js"></script>
    <script src="vendor/uikit/uikit.js"></script>
    <script src="vendor/magnific-popup/jquery.magnific-popup.js"></script>

    <!-- Theme Base, Components and Settings -->
    <script src="js/theme.js"></script>
    {% block postloadjs %}
    <script type="text/javascript">
    $('.toast').toast('show');
    </script>
    {% endblock %}
    </body>

    </html>

    Any help you can offer is greatly appreciated and sorry if I'm missing some important information, comment what I'm missing and I will add it.

    Continue reading...

Compartilhe esta Página