Python 通过视图上下文将数据传递到Django中的javascript

Python 通过视图上下文将数据传递到Django中的javascript,python,django,Python,Django,我试图将一些数据从views.py传递到模板,并在javascript中使用它,但我无法让它工作。有人知道我如何解决这个问题吗 在views.py中 listaUsuarios = User.objects.values_list('username', flat=True) context = {'listaUsuarios':listaUsuarios} return render(request, redirect, context) 这实际上是可行的,如果我进行打印(listaUsu

我试图将一些数据从views.py传递到模板,并在javascript中使用它,但我无法让它工作。有人知道我如何解决这个问题吗

在views.py中

listaUsuarios = User.objects.values_list('username', flat=True)
context = {'listaUsuarios':listaUsuarios}

return render(request, redirect, context)
这实际上是可行的,如果我进行
打印(listaUsuarios[2])
它只显示数据库中的用户名2

模板中的javascript

function checkForm(form)
{
 for (i = 0; i < listaUsuarioss.length; i++) {
     if(form.username.value==listaUsuarioss[i]){
 alert("Error: El nombre de usuario ya está en uso");
       form.username.focus();
 return false;
 }
}
}
函数检查表单(表单)
{
对于(i=0;i
对脚本的调用

<form method="post" action="{% url 'register' %}" onsubmit="return checkForm(this,{‌{listaUsuarios}});"> 

我知道我应该使用Django表单进行注册,但我没有,我正在尝试在注册新用户之前检查该用户名是否已被使用


谢谢大家

您的JavaScript无法访问Django模板变量。您需要将列表作为JSON发送,在JS中对其进行解析,并将结果分配给一个局部变量

context = {'listaUsuarios': json.dumps(list(listaUsuarios))}


我认为首先将listaUsuarios分配给javascript列表,然后进行迭代。你必须使用特殊的模板,谢谢!它还不起作用,可能是因为解析javascript时上下文不在模板中吗?我得到了这个错误:(1062,“重复输入'user'作为键'username'”)不,这个错误不可能与这个代码有任何关系。如果javascript工作,它应该停止post方法,并且这个错误不会出现,所以我猜这是关于用户名列表的。
function checkForm(form) {
    var listaUsuarios = JSON.parse({{ listaUsarios|safe }});
    ...