const data = '{{ search_user }}' const rdata = JSON.parse(data.replace(/"/g, '"')) const input = document.getElementById('user-input_products') let filteredArr = [] input.addEventListener('keyup', (e)=>{ box.innerHTML = "" filterMax = (fn, c) => x => c && fn(x) && c-- filter = profiles=> profiles['full_name'].includes(e.target.value) max = 30 filteredArr = rdata.filter(filterMax(filter, max)) if (filteredArr.length > 0) { filteredArr.map(profiles=>{ box.innerHTML += `<li><a href="{% url 'user_num' ${profiles['user']} %}">${profiles['full_name']}</a></li>` }) } else { box.innerHTML = "No result found" } })Y cuando quiero pasar id a django url dentro de innerHTML me da este error:
Could not parse the remainder: '${profiles["user"]}' from '${profiles["user"]}'
¿Cómo puedo arreglar eso?
rdata: [ { "user": 28, "full_name": "John" }, { "user": 35, "full_name": "Robert" }, { "user": 37, "full_name": "Mary" }, { "user": 38, "full_name": "Jennifer" }, ]No puede mezclar el código Python del lado del servidor con el código javascript frontend como este. Django Templates ve ${profiles['user']} como una cadena simple. Para solucionar esto, puede almacenar un prefijo de ruta en una variable JS y combinar los enlaces de usuario con el literal de plantilla JS:
const path_prefix = "{% url 'user_num' %}" const data = '{{ search_user }}' const rdata = JSON.parse(data.replace(/"/g, '"')) const input = document.getElementById('user-input_products') let filteredArr = [] input.addEventListener('keyup', (e)=>{ box.innerHTML = "" filterMax = (fn, c) => x => c && fn(x) && c-- filter = profiles=> profiles['full_name'].includes(e.target.value) max = 30 filteredArr = rdata.filter(filterMax(filter, max)) if (filteredArr.length > 0) { filteredArr.map(profiles=>{ box.innerHTML += `<li><a href="${path_prefix}${profiles['user']}">${profiles['full_name']}</a></li>` }) } else { box.innerHTML = "No result found" } }) Si la ruta para la función de vista user_num es user_num/ , entonces ${path_prefix}${profiles['user']} producirá, por ejemplo user_num/28 . Es posible que deba crear una nueva definición de URL si la función user_num requiere un argumento, o simplemente puede ingresar la ruta real directamente, por ejemplo: user_num/${profiles['user']} .