微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

渲染一段 html 时变量重置

如何解决渲染一段 html 时变量重置

我是使用 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 举报,一经查实,本站将立刻删除。