首页 > 解决方案 > django中使用javascript的变量字典

问题描述

我正在将可变大小的字典传递给 html,并且在 html 中我有一个脚本(javascript),我需要在另一个脚本中创建一个。通过代码,您可以了解我需要什么。

我需要将每个“考试”传递给特定的“客户”。

HTML 文件:

<p id="dependentes"></p>
{% for obj in object3 %}
    <div>
    <ul><p>Exames de {{ obj.id_cliente1 }}: </p>
        
        <div id="iteracao"></div>
    
    </ul>
    </div>

    <script type="text/javascript">
        var cliente1 = "{{ obj.id_cliente1 }}";
        var teste = document.getElementById('teste');
        cliente2 = teste.value;
        cliente2 = cliente2.replace(" ", "_");

        document.getElementById('iteracao').textContent = "\{\% for obj2 in " + cliente2 + " \%\}" + "<li><a href='/exames/\{\{ obj2.slug \}\}/'>\{\{ obj2.nome \}\}</a></li>" + "\n" + "\{\% endfor \%\}";

        //JSON.parse(document.getElementById('iteracao').textContent);

        var a = document.getElementById('dependentes`enter code here`');
        if (cliente1 != "None"){
            a.innerHTML = "Dependentes: ";
        }
    
</script>

{% endfor %}

查看文件:

类 ClienteDetailView(DetailView):

def get_queryset(self):
    self.slug = self.kwargs.get("slug")
    if self.slug:
        queryset = Cliente.objects.filter(slug__icontains=self.slug)
    else:
        queryset = Cliente.objects.all()
    print('ClienteDetailView')
    return queryset #, queryset2 #, queryset3, queryset4


def get_context_data(self, **kwargs):
    queryset = Cliente.objects.filter(slug__icontains=self.slug)
    cliente = Cliente.objects.get(slug__icontains=self.slug).id_cliente
    queryset2 = Exame.objects.filter(cliente_fk=cliente)
    queryset3 = Dependencia.objects.filter(id_cliente2=cliente)
    quantidade = Dependencia.objects.filter(id_cliente2=cliente).count()

    context = {
        "object": queryset,
        "object2": queryset2,
        "object3": queryset3,
    }

    if quantidade > 0:
        for i in queryset3:
            #cliente2 = Dependencia.objects.get(id_cliente2=i.id_cliente2).id_cliente1
            query = Exame.objects.filter(cliente_fk=i.id_cliente1)
            query2 = Cliente.objects.get(nome=i.id_cliente1)
            a = str(i.id_cliente1)
            a = a.replace(" ", "_")
            context[a] = query

    else:
        queryset4 = Exame.objects.all()

    tamanho = len(context)
    context['tamanho'] = tamanho

    print(context)
    return context

在 .py 代码中,我打印了上下文:

{'object': <QuerySet [<Cliente: Gustavo Cousseau>]>, 'object2': <QuerySet [<Exame: Olhos>]>, 'object3': <QuerySet [<Dependencia: Dependencia object (1)>, < Dependencia: Dependencia 对象 (2)>]>, 'Luiz_Paese': <QuerySet [<Exame: Prostata>, <Exame: Urina>]>, 'Peterson_Belo': <QuerySet [<Exame: Perna s>]>, 'tamanho ':5}

标签: javascripthtmldjango

解决方案


如果您想将一些变量传递到您的 Javascript 代码中,请使用json_script模板过滤器,完全按照Django 文档中的描述。不正确地执行此类操作可能会导致非常严重的安全风险。


推荐阅读