如何在Django中保存范围滑块的值(多种输入形式)

时间:2019-06-01 21:43:46

标签: javascript django django-templates django-views

我有一个范围滑块作为表单的一个文件。我可以用js更新商品的价值。 但是,由于某些原因,无法发送复选框状态。

这是我的模板:

<form method="POST">
    {% csrf_token %}
    <table id="levels">
        <label class="container">Easy
        <input type="checkbox" name="checks" value="1">
        <span class="checkmark"></span></label>
        <!--you get the idea-->
    </table>
     <input type="range" min="1" max="120" value="120" class="form-control-range" id="time_slider">
    <b> <span id="slider_value" ></span></b> min.
<input type="submit" id="update" name = "update" value="Filter">
</form>
<script>
        var slider = document.getElementById("time_slider");
        var output = document.getElementById("slider_value");
        output.innerHTML = slider.value;
        slider.oninput = function() {
            output.innerHTML = this.value;
        }
    </script>

和我的view.py:

def item_list(request):

    items = Items.objects.all()

    if request.POST:
        if 'update' in request.POST:
            check_list = request.POST.getlist('checks')
            time = request.POST.get('slider_value')
            if check_list:
                items=items.filter(level__in=check_list)
            if time:
                items=items.filter(time__lte=time)

如果我打印 check_list ,则所有复选框都将打勾。滑块反应灵敏,脚本有效,但没有值发送到我的视图。我得到的只是“无”。切换到 time_slider 也无济于事。我做错了什么?

1 个答案:

答案 0 :(得分:0)

给范围输入名称属性。由于您已经在后端代码中检查 slider_valu ,因此可以将代码更改为:

<input name="slider_value" type="range" min="1" max="120" value="120" class="form-control-range" id="time_slider">