【问题标题】:How can I populate value of a hidden field in Django from the value of a range slider如何从范围滑块的值填充 Django 中隐藏字段的值
【发布时间】:2020-01-06 05:50:42
【问题描述】:

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

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>
...

【问题讨论】:

  • 您能发布一些有关您的滑块小部件的详细信息吗?
  • 是的。我无法添加图像,但它只是一个从 0 到 25 的范围滑块。我正在构建一个应用程序,多个用户可以更新行长,所以我需要用户使用滑块输入的值返回到视图,以便我可以更新数据库以反映值@Chris
  • 它是来自某个库的滑块吗?
  • --> 它只是一个通用的 html 范围滑块

标签: django django-forms django-templates django-views hidden-field


【解决方案1】:

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

你的简单表格

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

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

<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')

【讨论】:

  • 非常感谢!是的,两者都有效,但我需要一个表单,因为我最终需要将更多数据传递回视图。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-29
相关资源
最近更新 更多