Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Django中的两个自定义标记之间传递变量_Javascript_Jquery_Python_Django - Fatal编程技术网

Javascript 在Django中的两个自定义标记之间传递变量

Javascript 在Django中的两个自定义标记之间传递变量,javascript,jquery,python,django,Javascript,Jquery,Python,Django,我正在尝试实现django模板标记{%domready%}{%enddomready%},它将获取它的内容,记住它,然后标记{%domready_render%},它将呈现所有内容 它看起来像这样: {# main.html #} <html> ... <body> ... <script> (function($) { $(document).ready(function() { {% do

我正在尝试实现django模板标记
{%domready%}{%enddomready%}
,它将获取它的内容,记住它,然后标记
{%domready_render%}
,它将呈现所有内容

它看起来像这样:

{# main.html #}
<html>
...
<body>
  ...
  <script>
      (function($) {
          $(document).ready(function() {
              {% domready_render %}
          });
      })(jQuery);
  </script>
</body>
</html>


{# some_other_file.html #}
{% extends main.html %}
..some html...
<a href="" id="link1">Link with onclick</a>
{% domready %}
    $('#link1').click(function() { ... describe here your javascript ... });
{% enddomready %}
..some html...
<a href="" id="link2">Another with onclick</a>
{% domready %}
    $('#link2').click(function() { ... describe here your another javascript ... });
{% enddomready %}
..some html...
但是这个上下文['dom_ready']只适用于同一个模板(我的意思是,我可以在一些其他文件.html中执行
{{dom_ready}}
,但我在main.html中没有看到它(可能是因为它们具有不同的渲染上下文或其他什么?)


谢谢。

正如您所猜测的,渲染上下文不会在模板文件之间共享

您可以通过使用模块级变量来解决问题,在该变量中定义模板标记

加上

dom_ready = []
到文件的顶部,然后在您具有上下文的位置['dom_ready']将其替换为dom_ready


你知道你可以多次调用$.ready吗?这可能比使用模板标记更简单、更简洁。

是的,但它不是线程安全的,不是吗?我的意思是,我也必须处理这个问题,对吗?当然,是的,但我们谈论的是“类似小部件的”有时候,你不能只内联写标记。这取决于你如何运行Django,如果它是prefork,那么不,你不:-)你可以让dom_ready成为一个由线程索引的列表字典。get_ident()。哦,我会读关于preforking的书,以前没听过,谢谢。但是忘记线程还是不好的
dom_ready = []