我试图将一些数据从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 表单进行注册,但我没有,并且我正在尝试在新用户注册之前检查该用户名是否已在使用中。
谢谢大家!
最佳答案
您的 JavaScript 无权访问 Django 模板变量。您需要以 JSON 形式发送列表,在 JS 中解析它并将结果分配给那里的局部变量。
context = {'listaUsuarios': json.dumps(list(listaUsuarios))}
...
function checkForm(form) {
var listaUsuarios = JSON.parse({{ listaUsarios|safe }});
...
关于python - 在 Django 中通过 View 上下文将数据传递给 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47331830/