动态URL路由Django

xxls0lw8  于 2023-03-31  发布在  Go
关注(0)|答案(2)|浏览(130)

我创建了一个动态的网址路由/视图为我的网站上的每一个产品,一切都工作正常,直到我去购物车/结帐,它加载的产品页面目前在购物车而不是Cart.html和Checkout.html

urlpatterns = {
    path('<str:pk>/', views.dynamic_product_view, name='productdetail'),
}

views.py:

def dynamic_product_view(request, pk=None):
    products = Product.objects.all()
    slug=None
    data = cartData(request)
    items = data['items']
    if pk is not None:
        try:
            slug = Product.objects.get(slug=pk)
        except:
            Http404()
    context = {
       'slug':slug,
       'products': products,
       'items': items
    }
    return render(request, 'product-details.html', context)

它目前工作正常的任何其他网页一样的索引,商店和产品页面,但问题出现在购物车和结帐

w46czmvw

w46czmvw1#

替换

Http404()

return Http404()

‌‌‌‌‌

qqrboqgw

qqrboqgw2#

只是添加一个答案而不是评论:
如果你使用的是没有前缀的动态URL路由,它会匹配所有可以出现在网站上的URL。Django会按照定义的顺序评估模式,所以动态模式应该在所有特定模式之后,然后当checkout和cart不匹配时,动态模式会处理它。
在本例中,将动态路径放在购物车路径和结帐路径之后。

相关问题