我还是Django的新手,正在努力解决这个问题:我有一个html格式的价格滑动条,它是我从一个模板中获得的。在html中,该条看起来像这样:
<div class="price-range ui-slider ui-corner-all ui-slider-horizontal ui-widget ui-widget-content"
data-min="33"" <!-- to replace with :{{price_max.product_price__max }}" -->
data-max="15"
></div>
<div class="range-slider">
<div class="price-input">
<p>Prix:</p>
<input type="text" id="minamount" />
<input type="text" id="maxamount" />
</div>
</div>
</div>
<a href="#">Filter</a>
我从视图中正确地上传了price_max和price_min,因为它们可以直接在网页上显示为文本。但是滑动条使用javascript渲染并拾取那些data-min和data-max值来显示动态结果,如下所示:enter image description here
javascript:
/*-------------------
Range Slider
--------------------- */
var rangeSlider = $(".price-range"),
minamount = $("#minamount"),
maxamount = $("#maxamount"),
minPrice = rangeSlider.data('min'),
maxPrice = rangeSlider.data('max');
rangeSlider.slider({
range: true,
min: minPrice,
max: maxPrice,
values: [minPrice, maxPrice],
slide: function (event, ui) {
minamount.val( ui.values[0]+'€');
maxamount.val( ui.values[1]+'€');
}
});
minamount.val( rangeSlider.slider("values", 0)+'€');
maxamount.val( rangeSlider.slider("values", 1)+'€');
用django模板变量替换data-min和data-max不起作用,我还不清楚确切的原因,但我想这与django渲染顺序有关。另一个困难是,我想用用户选择的值替换html渲染的值,然后获取thos值以在我的javascript过滤器产品文件中重用它们。
- 我应该如何使用视图注入的值来渲染data_min / data_max?
我希望django变量显示在输入的html属性中,然后被javascript重用,并像在html中以普通数字形式写入值时一样重新呈现。我不明白为什么它不起作用,因为django模板变量可以以纯文本形式显示,如<p>{{ price_max }}</p>
,因此,当产生HTML时,成功地替换了用于data-min和data-max的任意数字。
编辑:渲染的html:
<div class="filter-range-wrap">
<div class="filter-range-wrap">
<div class="price-range ui-slider ui-corner-all ui-slider-horizontal ui-widget ui-widget-content"
data-min="" data-max="99"></div>
<div class="range-slider">
<div class="price-input">
<p>Price:</p>
<input type="text" id="minamount">
<input type="text" id="maxamount">
</div>
初始模板代码:
<div class="filter-range-wrap">
<div class="filter-range-wrap">
<div class="price-range ui-slider ui-corner-all ui-slider-horizontal ui-widget ui-widget-content"
data-min="{{minMaxPrice.price__min}}" data-max="99"></div>
<div class="range-slider">
<div class="price-input">
<p>Price:</p>
<input type="text" id="minamount">
<input type="text" id="maxamount">
</div>
</div>
1条答案
按热度按时间j5fpnvbx1#
“我希望django变量显示在输入的html属性中,然后被javascript重用,并像在html中以普通数字形式写入值时一样重新呈现”
这就是它的工作原理。我认为有一些js语法/类型渲染问题(m.b.引号或其他东西)。你能提供渲染的html代码和模板代码吗?