我正在尝试将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表单进行注册,但我没有,如果该用户名已在使用中,我正在尝试在注册新用户之前进行检查。
谢谢大家!
答案 0 :(得分:3)
您的JavaScript无法访问Django模板变量。您需要将列表作为JSON发送,在JS中解析它并将结果分配给那里的局部变量。
context = {'listaUsuarios': json.dumps(list(listaUsuarios))}
...
function checkForm(form) {
var listaUsuarios = JSON.parse({{ listaUsarios|safe }});
...