Динамическая маршрутизация URL Django
Я создал динамический url маршрутизацию/просмотр для каждого из продуктов на моем сайте, Все работает нормально, пока я не перехожу к Cart/checkout и он загружает страницу продукта в настоящее время в Cart вместо 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)
В настоящее время он работает нормально на любой другой странице, такой как индекс, магазин и страница товаров, но проблема появляется в корзине и оформлении заказа
Заменить
Http404()
To
raise Http404()
Я решил эту проблему с помощью preator и он/она указал, что я должен поставить cart и checkout перед динамическим url путем в файле url patterns.
path('cart/', views.cart, name='cart'),
path('checkout/', views.checkout, name='checkout'),
path('<str:pk>/', views.dynamic_product_view, name='productdetail'),
и он полностью работал нормально.
Просто добавляю как ответ вместо комментария:
Если вы работаете с динамической маршрутизацией URL, которая не имеет префикса, она соответствует всем URL, которые могут появиться на сайте. Django оценивает шаблоны в порядке их определения, поэтому динамический должен быть после всех специфических шаблонов, и тогда, когда checkout и cart не совпадают, динамический обработает их.
В вашем случае разместите динамический маршрут после маршрутов корзины и оформления заказа.