#django #django-urls
#django #django-urls
Вопрос:
Я пытаюсь фильтровать продукты либо по бренду, либо по категории, но путь URL будет выполняться только path('<slug:brand_slug>/', views.product_list,name='product_list_by_brand'),
с тех пор, как он появится первым, и не будет выполнять второе.
Есть ли способ, которым я, вероятно, могу объединить оба пути или заставить оба пути работать независимо, не принимая во внимание порядок.
from . import views
app_name = 'shop'
urlpatterns = [
path('', views.product_list, name='product_list'),
path('<slug:brand_slug>/', views.product_list,name='product_list_by_brand'),
path('<slug:category_slug>/', views.product_list,name='product_list_by_category'),
]
Заранее благодарю вас за ваш ответ.
Ответ №1:
проблема в том, что ваш верхний шаблон URL-адреса переопределяет второй URL-адрес из-за того же сбоя и некоторых других причин.
ИСПРАВИТЬ
измените шаблон URL
path('<slug:brand_slug>/brand/', views.product_list,name='product_list_by_brand'),
path('<slug:category_slug>/', views.product_list,name='product_list_by_category'),
Еще одна вещь, которую вы можете сделать!
измените свою функцию и шаблон URL.
def product_list(request, slug):
mode = request.GET.get("mode")
if mode.lower() == "brand":
''' your brand code '''
pass
else:
''' your category code '''
pass
path('<slug:slug>/', views.product_list,name='product_list_by_category'),
если вы хотите выполнить код бренда, ваш шаблон URL будет выглядеть следующим образом.
127.0.0.1:8000/yourslug?mode=brand
и с помощью этого шаблона URL он будет выполнять код категории.
127.0.0.1:8000/yourslug
поэтому по умолчанию он будет выполнять код категории.
Комментарии:
1. Большое вам спасибо за ваш ответ… Это сработало
2. @workkofy, если мой ответ вам полезен. вы должны принять мой ответ, это здорово для меня.
3. Спасибо @HamzaLachi