django模板标记在javascript函数中不会被多次调用
在django应用程序中,我创建了一个模板标记函数,该函数生成一个随机数,我将其作为随机ID分配给编程生成的元素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
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);
});