【问题标题】:How can I avoid this Unexpected token error when using django/javascript?使用 django/javascript 时如何避免这个 Unexpected token 错误?
【发布时间】:2020-10-17 00:07:17
【问题描述】:

我正在尝试将一些数据从我的 django 应用程序传递到 javascript 之后 回答this question

views.py

context['username'] = json.dumps(request.user.username)

test_script.js

document.write('Script working')
username = {{ username|safe }};

但是在 console 我得到了错误

Uncaught SyntaxError: Unexpected token '{'

我错过了什么?

【问题讨论】:

  • 你不能在 javascript 中使用 jinja2。只需在 标签中的 html 中创建 js 变量,然后将脚本放在下面,您就可以使用该变量

标签: javascript django


【解决方案1】:

假设这是您的 HTML:

<html>
  <body>
    .
    .
    .
  </body>
  <script>
    var username = "{{ username|safe }}"
  </script>
  <script src="path/to/your/script.js"></script>
</html>

将您的用户名变量放在您的 html 中,然后您可以在脚本文件中访问它。

【讨论】:

  • 试过 document.write(username);并得到错误:未捕获的 ReferenceError:用户名未定义
  • console.log(username) ?
  • 或者试试这个:var username = "{{ username|safe }}"
  • 请添加评论建议以回答 - 它有很大帮助
  • 'var' 是多余的吗? (我是一个pythonista,你可以看到对js知之甚少)
【解决方案2】:

Django 已经为此提供了解决方案。 在您的模板中,假设您正在扩展基本模板

....
{{ username|json_script:'username'}}

然后在你的 javascript 文件中

var username = JSON.parse(document.getElementById('username').textContent)

有关 json 脚本的更多信息,请查看https://docs.djangoproject.com/en/3.0/ref/templates/builtins/#json-script

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-11
    • 1970-01-01
    • 2011-08-03
    • 1970-01-01
    • 2013-12-09
    • 2022-11-02
    • 1970-01-01
    相关资源
    最近更新 更多