从渲染模板中选择Django模板变量以在JavaScript中使用

7ivaypg9  于 2023-04-22  发布在  Go
关注(0)|答案(1)|浏览(128)

我还是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>
j5fpnvbx

j5fpnvbx1#

“我希望django变量显示在输入的html属性中,然后被javascript重用,并像在html中以普通数字形式写入值时一样重新呈现”
这就是它的工作原理。我认为有一些js语法/类型渲染问题(m.b.引号或其他东西)。你能提供渲染的html代码和模板代码吗?

相关问题