Как я могу заполнить значение скрытого поля в Django от значения ползунка диапазона - PullRequest
0 голосов
/ 06 января 2020

Итак, я создаю приложение, в котором пользователи могут использовать ползунок диапазона, чтобы обновить базу данных новым целочисленным значением. У меня есть ползунок, который предоставляет мне целочисленное значение, которое я хотел бы вернуть в представление, но я не знаю, как вернуть это значение из шаблона.

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

1 Ответ

1 голос
/ 06 января 2020

В простейшей форме вы можете получить значение ползунка напрямую, и вам не нужен 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')
...