Как передать дополнительные параметры в тег url?
Необходимо передать в представление дополнительный параметр через тег url, но чтобы он не фигурировал ни в параметрах url, ни в параметрах запроса. Т.е. передать параметр id в следующем примере, но чтобы пользователь этого не видел.
# urls.py
urlpatterns = [
path('sport/<slug:title>/', sports, name='sports'),
]
# views
def sports(request, title, id):
return HttpResponse(f"<h2>Спорт {title}. ID: {id}</h2>")
# template.html
{% for sport in sports %}
<li><a href="{% url 'sports' sport.title sport.id %}">{{sport.title}}</a></li>
{% endfor %}
Получаю ошибку
NoReverseMatch at /
Reverse for 'sports' with arguments '('Chess', 1)' not found. 1 pattern(s) tried: ['sport/(?P<sport>[-a-zA-Z0-9_]+)/\\Z']
Можно ли так сделать? И если да - то как? Копаюсь 3-ий час в сети, не могу найти ответ. Нашел пару возможно работающих костылей (хотя решить проблему может только второй, с пользовательским тегом):
- https://stackoverflow.com/questions/58978754/how-to-pass-optional-parameters-in-url-via-path-function
- https://stackoverflow.com/questions/51375759/django-url-template-with-query-parameters?noredirect=1&lq=1
но не могу поверить, что для такого простого кейса нет встроенного решения. Вроде стандартная задача: передать id, но не указывать его в url-строке в SEO-целях, разве нет?