Я пытался создать пользовательский интерфейс для фильтрации результатов из моей базы данных.Важно то, что я хочу, чтобы фильтры были «аддитивными».Таким образом, если пользователь выбирает один фильтр, страница перенаправляет и отображает результаты.После этого пользователь может выбрать другой фильтр, и результаты сузятся до обоих фильтров.Это должно продолжаться для любого количества фильтров.
Вот как это выглядит сейчас
@app.route('/')
def home():
kind = request.args.get('kind')
price = request.args.get('price')
category = request.args.get('category')
filters = {}
if price is not None: filters['params.price'] = {'$lt' : int(price) }
if kind is not None: filters['kind'] = kind
if category is not None: filters['category'] = category
posts = db.collection.find(filters)
return render_template('home.html', posts=posts)
и ссылки для моих ссылок с использованием шаблонов jinja2 выглядят как
<li><a href="{{ url_for ('home', kind='m') }}">Label</a></<li>
<li><a href="{{ url_for ('home', price=50000)}}">Label</a></li>
<li><a href="{{ url_for ('home', category='p') }}">Label</a></li>
... many more similar links
В настоящее времяэто работает как переопределение для URL.Если я нажимаю на любую из этих ссылок, она просто заменяет весь URL-адрес и использует переменную из ссылки.
first link: http://127.0.0.1/?kind=m
second link: http://127.0.0.1/?price=5000
third link: http://127.0.0.1/?category=p
Что я хотел бы сделать, это добавить запрос. Если я щелкну любой изссылки запоминают предыдущие выбранные фильтры и «добавляет» последнюю нажатую ссылку.Ниже я покажу, как я ожидаю, что это сработает.
first link: http://127.0.0.1/?kind=m
second link: http://127.0.0.1/?kind=m?price=50000
second link: http://127.0.0.1/?kind=m?price=50000?category=p