Quiero enviar la identificación del producto a mis vistas.
Plantillas
<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>vistas.py
myRequets = request.GET.get('foo')Pero myRequets devuelve 'Ninguno'
¿Cómo puedo arreglar esto? ¿Hay una mejor manera de pasar valores a views.py?
No necesita JS para hacer esto porque Django permite parámetros en las URL:
# URLconf from django.urls import path from . import views urlpatterns = [ path('product/', views.product), path('product/<int:product_id>/', views.product), ]vistas.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 ...Fuente:https://docs.djangoproject.com/en/3.2/topics/http/urls/#example (adaptado)
Luego en tu plantilla:
{% 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 %}