javascript - 如何将带有 django 标签的 javascript 代码加载到我的 django 模板中

标签 javascript jquery django templates

情况:我正在使用 Django 1.9。我有一个 JavaScript 循环,它需要一些存储在数据库中的 JavaScript。这个 js 有一些 django 标签,当该 js 加载到我的模板中时我想加载这些标签。 这是函数:

{% extends "base_clean.html" %}
{% load i18n %}
{% block title %}{% trans "Campaign" %} - {{ campaign.name }}{% endblock %}

{% block content %}


Some HTML

Some CSS

<script type="text/javascript">

Some javascript functions.

displayed = 0;
delay = 1000;
(function loop() {
   setTimeout(function() {
   p = pq.getMessage()
   if( p != false ) {
      posthtml = get_message_html(p);
      displayed++;

       {{ display_style.layout.js|safe }} /* !!!!!!!!!!!!!!!!!!*/


   if( pq.messagesCount() < 10 ){
      pq.getMessages()
   }
   loop();
 }, delay);
})();
</script>
{% endblock %}

这就是 {{ display_style.layout.js|safe }} 加载的内容:

setTimeout(function() {
        $('#messages_container').append(posthtml);
        {% if display_style.post_append_effect %}
          $(posthtml).addClass("animated {{ display_style.post_append_effect.css }}");
        {% endif %}
      }, 900);
    }

    if(displayed == {{ display_style.messages_per_page }}){
        delay = {{ display_style.seconds_between_messages }}000;
    }

    if(displayed > {{ display_style.messages_per_page }}){
      $target = $('#messages_container div.list-group-item').first()
      {% if display_style.message_remove_effect %}
        $target.removeClass("animated {{ display_style.post_append_effect.css }}")
        .addClass("animated {{ display_style.post_remove_effect.css }}");
      {% endif %}
      setTimeout(function() {
        $target.remove();
        displayed--
      }, 900);

    }

正如你所看到的,它有一些我也想渲染的 django 标签。但我有“未捕获的语法错误:意外的 token %”

编辑:添加了 django header 标签。和模板的结构 忘了说,如果我明确地编写我想要渲染到模板的 js,它就可以工作...问题是尝试将标签渲染到渲染的 js 中

最佳答案

我认为问题在于您将第二个模板作为文本字符串加载,而不是使用 Django 的 include template tag 。尝试改变{{ display_style.layout.js|safe }}{% include "display_style.layout.js" %}并且任何语法错误都应该变得更加明显。

您还应该考虑使用 Django 的静态文件来加载 javascript,而不是在模板中包含 javascript。然后按照this answer您可以简单地在 <script> 中定义要传递给 javascript 的变量。您可以在 javascript 文件中引用的标记。像这样的东西:

Django 模板

{% load staticfiles %}
<!-- Some html -->
<script>
    var displayStyle = {{ display_style }};
</script>
<script type="text/javascript" src="{% static 'your_js_file.js' %}"></script>
<!-- Rest of your HTML -->

通过静态文件加载JS文件

var displayStyle = window.displayStyle || null;
if (displayStyle) {
    // Your code here.
}

最后,特定错误的一种可能是您包含的模板具有 %某个地方的角色。这需要转义为 %%在 django 模板系统中。

关于javascript - 如何将带有 django 标签的 javascript 代码加载到我的 django 模板中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37351991/

相关文章:

Django Tastypie : Getting extra-values of a m2m relationships using intermediate model

python - 错误 : django. core.exceptions.AppRegistryNotReady : The translation infrastructure. .. 在 python 中

javascript - 设置超时。只能更新已安装或正在安装的组件

javascript - 在每 2 位数字后输入 mac 地址时自动插入冒号

javascript - jQuery 仅序列化表单的一部分

Jquery SlideToggle 效果不流畅

java - foreach 中的值输入字段到 foreach 外的输入字段

javascript - 获取 Jasmine 测试报告器输出到指定的页面元素

javascript - 上传 div 背景 url

python - 在 Django REST Framework 中公开 MoneyFields?