从数据库中删除所有产品后,我开始收到此错误(我这样做是因为它只是用于测试的虚拟数据)。当我运行服务器并转到本地主机时,我看到这个错误
该错误指出,尽管产品未在主页上调用,但该问题是在“home.views.index”中提出的。我觉得我的应用程序正在寻找产品,但在找不到产品时崩溃了。
这是我的应用程序 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)
这是我的产品/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'),
]
这是 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)
这是 home/urls.py 的代码
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='home')
]
这是 home/views.py 的代码
from django.shortcuts import render
def index(request):
return render(request, 'home/index.html')
这里是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 %}
这里是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:[email protected]">[email protected]</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>
非常感谢您提供的任何帮助,如果我遗漏了一些重要信息,请评论我遗漏的内容,我会添加它。
你应该最后添加 home.urls
或者,
在 home.urls 中添加其他路径
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)
**urlpatterns.append(path('', include('home.urls')))**