Не удалось разобрать остаток: '${profiles['user']}' из '${profiles['user']}
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"
}
})
А когда я хочу передать id в django url внутри innerHTML, это дает мне эту ошибку:
Could not parse the remainder: '${profiles["user"]}' from '${profiles["user"]}'
Как я могу это исправить?
rdata:
[
{
"user": 28,
"full_name": "John"
},
{
"user": 35,
"full_name": "Robert"
},
{
"user": 37,
"full_name": "Mary"
},
{
"user": 38,
"full_name": "Jennifer"
},
]
Вы не можете смешивать код Python на стороне сервера с кодом javascript на стороне фронтенда подобным образом. Django Templates воспринимает ${profiles['user']}
как простую строку. Чтобы исправить это, вы можете хранить префикс пути в переменной JS и объединить пользовательские ссылки с литералом шаблона 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"
}
})
Если путь для функции представления user_num
равен user_num/
, то ${path_prefix}${profiles['user']}
выдаст, например, user_num/28
. Возможно, вам придется создать новое определение URL, если функция user_num
требует аргумента, или вы можете просто вставить фактический путь напрямую, например: user_num/${profiles['user']}
.