问题描述
我是使用 django 和编程本身的新手,我在正确渲染我的模板时遇到了一些问题。
我设法使用 Ajax 和 JQuery 从我的 oracle 数据库创建了实时搜索。
目前我正在尝试将我的实时搜索带来的名称添加到一个数组中,然后将其传递到后端并用它做一些更多的事情,但是每次我搜索一个新名称时,我的数组都会被清空。此外,如果我的实时搜索带来多个结果,每次我尝试将其添加到我的数组时,它都会创建一个新的而不是添加它
这是我的模板:
base.html
<!DOCTYPE html>
<html lang="en">
<head>
<Meta charset="UTF-8">
<Meta http-equiv="X-UA-Compatible" content="IE=edge">
<Meta name="viewport" content="width=device-width,initial-scale=1.0">
<script></script>
<title>Gestion de tiendas para usuarios</title>
</head>
<body>
{% csrf_token %}
{% block content %}
{% endblock %}
</body>
{% load static %}
<script src="{% static "jquery/jquery.js" %}"></script>
<script src="{% static "jquery/plugins/jquery.cookie.js" %}"></script>
<script>
var users_to_be_added = [];
$(document).ready(function () {
$("#livesearch").on('input',function (e) {
e.preventDefault();
search_text = $("#livesearch").val()
// console.log(search_text)
$.ajax({
method: 'post',url: 'livesearch/',data: { text: search_text },beforeSend: function (xhr,settings) {
xhr.setRequestHeader("X-CSrftoken",$.cookie('csrftoken'));
},success: function (res) {
$("#results").html(res);
console.log(res)
}
})
})
$("#agregar_usuario").click(function (e) {
// e.preventDefault();
let user_picked = $("#users option:selected").text();
if (jQuery.inArray(user_picked,users_to_be_added) !== -1) {
alert("El usuario ya se encuentra seleccionado")
}
else {
users_to_be_added.push(user_picked);
$.ajax({
method: 'post',url: 'add_users/',data: { users_preselected: users_to_be_added },settings) {
xhr.setRequestHeader("X-CSrftoken",$.cookie('csrftoken'));
},success: function (res) {
$("#list_users").html(res);
console.log(res)
}
})
}
console.log(users_to_be_added);
// $("#users").empty();
})
})
</script>
</html>
user_selector.html
<select id="users">
<option selected disabled hidden>Seleccionar Usuario</option>
{% for u in list_users %}
<option value="{{u.NAME}}">{{u.NAME}}</option>
{% endfor %}
</select>
home.html
{% extends 'base.html' %}
{% block content %}
<h1>Busque Un Usuario Aqui</h1>
<input type="text" id="livesearch" placeholder="Buscar Usuario Aqui"><span><button id="agregar_usuario">Agregar Usuario</button></span><br>
<label for="userNames">Elija un usuario:</label>
<div id='results'>
{% include "user_selector.html" %}
</div>
<div id="list_users">
{% include "users_list_tobe_added.html" %}
</div>
{% endblock %}
users_list_tobe_ added.html
<h4>Lista de usuarios</h4>
{{added_users}}
<ul id="users_preselected">
<!-- {% for u in added_users %}
<li value="{{u}}">{{u}}</li>
{% endfor %} -->
</ul>
views.py
def home_view(request):
return render(request,"home.html",{})
def livesearch(request):
# print(request)
searchtext = request.POST.get('text')
searchtext = str(searchtext).upper()
print(searchtext)
# if len(searchtext) > 3:
query = 'query that gets user'
clean_list = []
cursor = method_that_get_cursor()
results = cursor.execute(query)
for row in results:
for key in cursor.description:
clean_list.append({key[0]: value for value in row})
# list_users = pd.DataFrame(users)
# print(clean_list)
print(type(clean_list))
context = {
"list_users": clean_list
}
return render(request,'user_selector.html',context)
def add_users(request):
# print(request)
users_preselected = request.POST.get('users_preselected[]')
print(type(users_preselected))
context = {
"added_users": users_preselected
}
return render(request,'users_list_tobe_added.html',context)
urls.py
from django.contrib import admin
from django.urls import path
from add_users.views import home_view,livesearch,add_users
urlpatterns = [
path('livesearch/',name='livesearch'),path('add_users/',add_users,name='add_users'),path('',home_view,name='home'),path('admin/',admin.site.urls),]
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)