<a href="{% url 'buy' %}?id={{product.id}}">купить</a>
Я бы так сделал, если бы это была реализация какого то фильтра. То есть к примеру урл вида /buy/
отдавал страницу с полным списком, а урл вида /buy/?id=value
отдавал что то конкретное. Конечно делать фильтрацию в таком случае нет смысла, так как в результате получим только одно значение. А вот если бы фильтровали, скажем, по категориям, то вполне хороший подход.
Но в твоем случае лучше делай как Alerion сказал.