如何根据范围滑块的值填充 Django 中隐藏字段的值

How can I populate value of a hidden field in Django from the value of a range slider

所以我正在构建一个应用程序,用户可以使用范围滑块使用新的整数值更新数据库。我有一个滑块,它为我提供了我想要 return 到视图的整数值,但我不知道如何从模板中 return 这个值。

https://docs.djangoproject.com/en/3.0/ref/forms/widgets/

我查看了文档,但找不到有关范围输入的任何信息。

# forms.py

from django import forms

class UpdateForm(forms.Form):
    update = forms.IntegerField(widget=forms.HiddenInput(**something like:value='slider-input**}}))
# views.py
def home_view(request):
    form = UpdateForm()
    return render(request, 'main/index.html', {'form': form})
# index.html
...
    <form id="update-form" method="post">
        {% csrf_token %}
        {{ form }}
        <div id="slider">
            <input class="slider-widget" min="0" max="25" step="1" value="0" type="range">
        </div>

        <div class="options">
            <a href="{% url 'main-home' %}">
                <img src="{% static 'main/media/cancel.png' %}" alt="cancel">
            </a>
            <button type="submit">
                <img src="{% static 'main/media/confirm.png' %}" alt="confirm">                
            </button>
        </div>        
    </form>
...

在最简单的形式中,您可以直接获取滑块值,不需要 HiddenField。

你的简单表格

class UpdateForm(forms.Form):
    update = forms.IntegerField()

在您的 html 模板中,只需确保将 'name' 属性添加到您的滑块,并为其指定与表单中的字段名称相同的名称:

<div id="slider">
     <input name="update" class="slider-widget" min="0" max="25" step="1" value="0" type="range">
</div>

在您看来,只需处理以下表格:

form = UpdateForm(request.GET or None)
if form.is_valid():
    slider_value = form.cleaned_data['update']
    # do somthing

实际上,对于像这样的简单案例,您并不真的需要表格。您也可以直接在您的视图中获取值

slider_value = request.GET.get('update')