Вы не можете сделать это так в django urls.py. Но вы можете передать строку URL-запроса в представление. Например, если вы нажмете этот URL:
http://localhost:8000/Category1-comparison/Brand1-vs-Brand2/?vs=Brand3
Тогда вы можете поймать значение Brand3
из request.GET
. Например:
def compare_brand(request, category_slug, brand_slug1, brand_slug2):
brand_slug3 = request.GET.get('vs')
Лучшее решение:
Может быть, лучше всего использовать строку запроса URL-адреса все вместе. Потому что таким образом URL будет намного чище. Например:
# url
path('/comparison/<slug:category_slug>/', compare_brand)
# view
def compare_brand(request, category_slug):
brands = request.GET.getlist('brands')
if len(brands) < 2:
raise Exception('Need 2 brands atleast')
# browser url
http://localhost:8000/comparison/Cat1/?brands=Brand1,Brand2
Из комментариев
Вы можете создать еще один URL, указывающий на то же представление
# url
path('<slug:category_slug>-comparison/<slug:brand_slug1>-vs-<slug:brand_slug2>-vs-<slug:brand_slug3>/',views.compare_brand),
path('<slug:category_slug>-comparison/<slug:brand_slug1>-vs-<slug:brand_slug2>/',views.compare_brand)
# view
def compare_brand(request, category_slug, brand_slug1, brand_slug2, brand_slug3=None):
if brand_slug3:
# do something