python - 在 Django 中通过 View 上下文将数据传递给 javascript

标签 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 表单进行注册,但我没有,并且我正在尝试在新用户注册之前检查该用户名是否已在使用中。

谢谢大家!

最佳答案

您的 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/

相关文章:

python - 覆盖 netcdf 中的特定单元格

python - 如何使用Ajax实现Progressbar以完成长的 celery 任务

django - 为什么多处理在 Django runserver 上工作而不在 nginx uwsgi 上工作?

django - 用户未传递到模板 TEMPLATE_CONTEXT_PROCESSORS

python - 通过 Python 将 Excel 剪辑粘贴到电子邮件正文

python - 如何使用 python argparse 解析多个嵌套的子命令?

python - CVLC 无法连接到 D-Bus session

python - 使用 Django 中的表单创建自定义 html 模板

python - 一个 Apache 上的多个 Django 管理站点...当我登录一个时,我从另一个注销

python - 如何将 boto3 客户端与 Python 多处理一起使用?