【发布时间】:2021-11-08 01:16:21
【问题描述】:
所以,我正在制作一个动态搜索栏,一切都按预期工作(从 Django 获取结果,将其转换为 JSON,JS 接收 JSON 等),除了将结果转换为 HTML这页纸。我不确定我应该怎么做才能让结果真正显示在网页上,而不仅仅是在控制台上?
代码:
<form class="d-flex" method="POST">
{% csrf_token %}
<input class="form-control me-2" type="search" id='search' placeholder="Search for books via their titles" aria-label="Search" >
<div id="results" style="display: none;">
</div>
</form>
document.addEventListener("DOMContentLoaded", () => {
// TODO: Implement Search Mechanic
const search = document.querySelector("#search");
if (search !== null)
{
search.onkeyup = () => {
console.log(search.value);
get_results(search.value);
};
}
});
function get_results(query)
{
//TODO Create API to get results
if (query === null)
{
return []
}
if (query !== "")
{
fetch(`/results/${query}`)
.then(response => response.json())
.then(result => {
console.log(result);
const display_div = document.querySelector("#results");
display_div.style.display = "block";
result.forEach(query => {
console.log(query);
const par = document.createElement("par");
const a = document.createElement("a");
a.classList.add = "links";
a.textContent = query.name;
a.href = "#";
par.appendChild(a);
display_div.appendChild(par);
});
});
}
}
@login_required
def results(request, query):
if request.method == "GET":
if query is not None:
results = Search(query).get_results()
print(results)
JsonResponse({"message": f"query {query} successful"}, status=200)
response = serializers.serialize("json", results)
return HttpResponse(response, content_type='application/json')
【问题讨论】:
标签: javascript django ajax twitter-bootstrap django-templates