Suponiendo que tengo que enviar algo mediante javascript de forma asincrónica sin actualizar la página.
nombre.html
{%if names%} {%for name in names%} <h4>{{name}}</h4> {%endfor%} {%endif%}En name.html, voy a enviar "Joe" a mi backend de Django para consultar
let crsf = '{{csrf_token}}' fetch('{%url "name"%}', { credentials: 'same-origin', headers: { 'X-CSRFToken': crsf, 'Content-Type': 'application/json', 'Accept': 'application/json, text/plain, */*'}, method: 'POST', body: JSON.stringify({ joe: "Joe", }),}).then(res=>console.log(res))Ahora "Joe" ha sido enviado al backend
En vistas.py:
def name(request): names = Names.objects.all() paginator = Paginator(names, 100) page = request.GET.get('page') paged_names = paginator.get_page(page) context = { 'names':paged_names, } if request.method == 'POST': data = json.loads(request.body.decode("utf-8")) joe = data.get("joe") names = Names.objects.all() names = names.filter(name__iexact=joe) context = { 'names':names, } # return render(request, 'cool/names.html', context) return render(request, 'cool/names.html', context)Ahora tengo todos los nombres llamados "Joe" consultados de la base de datos.
Pregunta: ¿Cómo renderizo todos los "Joe" en name.html y también hago que la paginación funcione según lo previsto, suponiendo que hay más de 20k "Joe"?