Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.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
django模板标记在javascript函数中不会被多次调用_Javascript_Django_Django Template Filters - Fatal编程技术网

django模板标记在javascript函数中不会被多次调用

django模板标记在javascript函数中不会被多次调用,javascript,django,django-template-filters,Javascript,Django,Django Template Filters,在django应用程序中,我创建了一个模板标记函数,该函数生成一个随机数,我将其作为随机ID分配给编程生成的元素 import os import random from django import template register = template.Library() @register.tag(name="randomgen") def randomgen(parser, token): items = [] bits = token.split_c

在django应用程序中,我创建了一个模板标记函数,该函数生成一个随机数,我将其作为随机ID分配给编程生成的元素

 import os
 import random
 from django import template

 register = template.Library()

 @register.tag(name="randomgen")
 def randomgen(parser, token):
     items = []
     bits = token.split_contents()
     for item in bits:
         items.append(item)
     return RandomgenNode(items[1:])

 class RandomgenNode(template.Node):
    def __init__(self, items):
       self.items = []
       for item in items:
          self.items.append(item)

    def render(self, context):
        arg1 = self.items[0]
        arg2 = self.items[1]
        if "hash" in self.items:
            result = os.urandom(16).encode('hex')
        elif "float" in self.items:
            result = random.uniform(int(arg1), int(arg2))
        elif not self.items:
            result = random.random()
        else:
            result = random.randint(int(arg1), int(arg2))
        return result
在我的html模板中,我使用load标记导入模板标记.py文件:

{% load custom_tag %}
单击特定按钮时,randomgen()函数仅调用一次:

$(document).on("click", ".add_div_btn", function() {
     let random_id = "{% randomgen 100 1000 %}";
     <!-- will generate a random number between 10 and 100 -->
     console.log("random id: ", random_id);
});
$(文档)。在(“单击“,”。添加div\u btn”,函数(){
让random_id=“{%randomgen 100 1000%}”;
日志(“随机id:,随机id”);
});
但是,第一个按钮后的每个按钮都会生成相同的数字

在检查控制台日志时,我发现custom_tag.py文件中的randomgen()函数只被调用了一次


我不确定如何在javascript中正确调用django模板标记函数。

javascript在前端运行,django模板标记在服务器上运行

模板中的JavaScript最终呈现为(例如)


而且根本没有自定义模板标记。

JavaScript在前端运行,Django模板标记在服务器上运行

模板中的JavaScript最终呈现为(例如)


而且根本没有自定义模板标记。

这实际上是个好主意,使用javascript的基本随机数生成器函数。既然您提到了ajax调用,您能举一个对django模板标记函数进行ajax调用的例子吗?这真的超出了这个问题的范围,但是
fetch()的任何旧例子都可以
一个返回JSON响应的简单视图就可以了。这实际上是个好主意,使用javascript的基本随机数生成器函数。既然你提到了ajax调用,你能举一个对django模板标记函数进行ajax调用的例子吗?这真的超出了这个问题的范围,但是任何
fetch()
的旧示例和返回JSON响应的简单视图都可以。
$(document).on("click", ".add_div_btn", function() {
     let random_id = "477";
     <!-- will generate a random number between 10 and 100 -->
     console.log("random id: ", random_id);
});
$(document).on("click", ".add_div_btn", function() {
     let random_id = Math.floor(100 + Math.random() * (1000 - 100));
     // will generate a random number between 10 and 1000
     console.log("random id: ", random_id);
});