如果所选产品在检查此方法的方法上返回true,我目前正在尝试使用javascript来显示额外的表单字段。虽然我有表单选择的onchange部分设置我正在努力实际访问产品方法。我假设我必须使用我没有经验的json。我希望做以下操作,使用if语句中的方法返回。我现在尝试使用的代码是(我意识到它只是显示一个警报atm但我的首要任务是让它工作):
function openingCheck(optionValue){
{% check_opening_date as json %}
var checkOpeningDateJSON = {{json|safe}};
if(checkOpeningDateJSON)
alert(optionValue);
};
使用:
@register.tag(name="check_opening_date")
def check_opening_date(parser, token):
"""return whether the product should show the opening date or not"""
product = Product.objects.get(pk=productID)
return serializers.serialize('json',product.show_opening_date())
我遇到的问题是我不确定如何将optionValue传递给check_opening_date函数以及如何返回product.show_opening_date()的值。
任何提示将不胜感激。
答案 0 :(得分:0)
有两种方法。
渲染页面时,将show_opening_date()
的结果与表单选择一起保存。这意味着对于列出的每个产品,您可以在某处创建相应的隐藏输入,或将结果作为属性保存在选择或其他内容中。选择产品后,您只需使用javascript检查此隐藏输入或属性的值。加载后服务器不需要与服务器交互。 (对所有服务器都有一个请求)
或者,您只需显示产品即可。选择一个时,使用ajax将服务器与产品的ID联系。服务器运行product.show_opening_date()
并返回带有结果的json。 (对服务器有很多请求;最初的,每次用户选择产品时)
你所拥有的东西没有意义。请记住,模板(以及所有模板变量和模板标签)在呈现页面时进行组装,因此它们没有执行任何javascript概念(或onchange事件等)。您似乎对模板标签的概念感到有些困惑。这些应该用于模板逻辑,以显示已在视图中聚合的信息(通常 - 它不是一成不变的)。