Как написать регулярное выражение c тире '-' для url Django?
Мой проект представляет каталог. Как сделать красивый URL при обработке запроса, чтобы значения одного параметра, выбранные пользователем в качестве фильтра, в данном случае "brand", писались через тире?
Вот так:
https://shop.ru/catalog/?brand=1stplayer-aerocool-akasa-asus
В моём случае после выбора нескольких фильтров получается уродливая строка запроса в виде:
http://shop.ru/catalog/?brand=1stplayer&brand=aerocool&brand=akasa&brand=asus
Как написать файл urls.py чтобы всё выводилось красиво?
urls.py:
from django.conf.urls import url
from django.urls import path, re_path
from catalog.views import *
urlpatterns = [
re_path(r'catalog/(?P<q>)(?P<price>)(?P<brand>)', catalog),
]
views.py:
from django import http
from django.http import HttpResponse
from django.shortcuts import render
from catalog.models import Corpus
from catalog import forms
# Create your views here.
def catalog(request, q, price, brand) -> HttpResponse:
objects = Corpus.objects.all()
search_value = ""
pr = ""
if request.method == "GET":
if 'q' in request.GET and request.GET['q']:
q = request.GET['q']
search_value = q
objects = objects.filter(name__icontains=q)
if 'price' in request.GET and request.GET['price']:
pr = request.GET['price']
pricerange = pr.split('-')
objects = objects.filter(price__gte=pricerange[0], price__lte=pricerange[1])
return render(request, 'catalog.html', {'corpuses': objects,
'search_value': search_value,
'priceform': forms.PriceForm({'price': pr}),
'brandform': forms.BrandForm
})
Код views ещё не дописал, так как надо разобраться с url-строкой.
Моя форма(для ясности):
