Использовать JS onclick для передачи некоторых данных в Django views.py?

Я хочу отправить идентификатор продукта в мои представления.

Шаблоны

<div class="products__header--search-result">
    <ul>
        {% for product in products %}
            <li onclick="change('{{ product.id }}')"><a href="#">{{ product.name }}</a></li>
        {% endfor %}
    </ul>
</div>

<script>
    function change(foo) {
        $.ajax({
            url: {% url 'dashboard' %},
            data: {
                'foo': foo,
            },
        });
    }
</script>

views.py

myRequets = request.GET.get('foo')

Но myRequets возвращает 'None'

Как я могу это исправить? Есть ли лучший способ передачи значений в views.py?

Для этого вам не нужен JS, потому что Django позволяет использовать параметры в урлах:

# URLconf
from django.urls import path

from . import views

urlpatterns = [
    path('product/', views.product),
    path('product/<int:product_id>/', views.product),
]

views.py

# View (in product/views.py)
def product(request, product_id=None):
    products = None
    if product_id:
       # Output the appropriate page of product entry, according to product_id.
        return ...
    # Output the appropriate page when product_id is None
    return ...

Источник: https://docs.djangoproject.com/en/3.2/topics/http/urls/#example (адаптировано)

Затем в вашем шаблоне:

{% if products %}
<div class="products__header--search-result">
    <ul>
        {% for product in products %}
            <li><a href="/product/{{ product_id }}/">{{ product.name }}</a></li>
        {% endfor %}
    </ul>
</div>
{% endif %}
Вернуться на верх