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

时间:2017-11-16 14:10:15

标签: python django

我正在尝试将views.py中的一些数据传递给模板并在javascript中使用它,但我无法使其工作。有谁知道我怎么解决这个问题?

在views.py

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

return render(request, redirect, context)

这实际上有效,如果我做了print(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;
 }
}
}

调用脚本

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

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

谢谢大家!

1 个答案:

答案 0 :(得分:3)

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

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

...

function checkForm(form) {
    var listaUsuarios = JSON.parse({{ listaUsarios|safe }});
    ...