【问题标题】:Inner HTML with Django tamplate if statement usig Js variable带有Django模板的内部HTML if语句使用Js变量
【发布时间】:2021-05-27 22:11:14
【问题描述】:

我真的是 JavaScript 新手,我有一个问题: 我需要在内部 Html 中添加一个 Django 模板 if 语句,该语句使用 JavaScript 变量进行比较(在这种情况下,变量是 event_id)

我在几个小时后尝试了很多替代方案,但我也没有成功。

这是我的 JS 代码。

eventClick: function (info) {
                var event_id = info.event.id;
                 $('#exampleModalToggle').modal('show');
                selected_group_member.innerHTML = `
                {% for reservation in reservations_api %}
                {% if reservation.id == ${event_id} %}
                <option value="1" selected>{{reservation.id}}</option>
                {% endif %}
                {% endfor %}
                `;
                }

使用此选项,我收到此错误: Could not parse the remainder: '${event_id}' from '${event_id}'

如果我将其更改为 {% if reservation.id == + event_id + %},我会收到此错误:Could not parse the remainder: '' from ''

那么,有可能吗?你知道它是怎么工作的吗!!! 我真的不知道如何解决它,我真的很感谢你的帮助 谢谢:)

【问题讨论】:

  • 这能回答你的问题吗? Access Javascript variable in Django Template
  • 不幸的是,您不能这样做 - Django 模板在服务器端执行,远在 javascript 执行之前。虽然我不确定您要做什么,但我认为仅使用 javascript 可能是可行的。

标签: javascript django jinja2 innerhtml


【解决方案1】:

这样的事情可能对你有用:

eventClick: function (info) {
  const reservations = '{{ reservations_api | safe }}';
  var event_id = info.event.id;
  $('#exampleModalToggle').modal('show');

  let innerHtml = '';
  reservations.forEach((reservation) => {
    if (reservation.id == event_id)
      innerHtml += `<option value="1" selected>${reservation.id}</option>`;
  });

  selected_group_member.innerHTML = innerHtml
}

首先创建一个新的 javascript 变量(称为reservations),然后将所需的&lt;option&gt; 字符串连接到另一个变量(innerHtml)。最后将innerHtml 设置为selected_group_member

更新

添加了在 cmets 中发现的 | safe 模板标签 https://docs.djangoproject.com/en/3.2/ref/templates/builtins/#safe

【讨论】:

  • 感谢您的帮助!这似乎是一个非常好的解决方案:),我试过了,但我收到了这个错误:Uncaught TypeError: reservations.forEach is not a function,可能是因为“eventClick”是来自 fullcalendar 库的方法,可能禁用了“forEach”,但我不确定,我真的不知道
  • 哦,我明白了 :) 在 ` {{ reservations_api |安全 }};` :D 非常感谢 :)
猜你喜欢
  • 2017-03-25
  • 1970-01-01
  • 2022-12-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-06
  • 1970-01-01
  • 1970-01-01
  • 2013-10-17
相关资源
最近更新 更多