尝试查看产品详细信息页面时 Django 3 中的 URL 问题

Issues with URLs in Django 3 when trying to view products detail page

Django 新手,我正在尝试使用 URLs.py 中的以下代码简单地访问我的产品详细信息页面:

urls.py:

from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static
from products import views
import carts
from carts.views import CartView
from django.urls import path


urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.home, name='home'),
    path('products/', views.all, name='products'),
    path('s/', views.search, name='search'),
    path('products/<slug:slug>', views.single, name='single_product'), <----This is the page I want to get to
    path('cart/', carts.views.CartView, name='cart'),
]
if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    

如果有帮助,这是我在模板中使用的 link 进入产品展示页面 <a href="{{ product.get_absolute_url }}" class="btn btn-primary">View</a>

这是我的观点:

def single(request, slug):
    try:
        product = Product.objects.get(slug=slug)
        images = ProductImage.objects.filter(product=product)
        context = {'product': product, "images": images}
        template = 'products/single.html'
        return render(request, template, context)
    except:
        raise Http404

但是在尝试访问此页面时出现以下 404 错误:

也许一双新鲜的眼睛可以帮助我发现我正在犯的错误?

如果需要任何其他信息,请告诉我,我们很乐意提供。提前一百万致谢!

也许最后一个斜杠 ('/') 有问题,请尝试不使用 url: http://127.0.0.1/products/product-one

首先尝试替换:

    path('products/<slug:slug>', views.single, name='single_product'),

    path('products/<slug:slug>/', views.single, name='single_product'),

默认情况下,Django 会自动在 url 的末尾附加斜杠 (/),您向我们展示的图像显示 url 以斜杠结尾,而您定义的路径不包含斜杠.我只是尝试重现它,这让它起作用了。

然后,如果它仍然不起作用,请仔细检查您是否使用了正确的 slug,以便在您提出 a 时使用 shell 找到您的产品每当发生异常时都会返回 404。您甚至可以考虑删除 try/except 以检查它是否真的引发了不同的异常。