РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
399 of 818 menu

Метод hidden_fields

Метод hidden_fields применяется к объекту формы и возвращает список всех скрытых полей формы в виде объектов BoundField. Скрытые поля определяются как поля, для которых используется виджет HiddenInput или его наследники. Метод удобно использовать при ручной генерации HTML-кода формы для раздельной обработки скрытых и видимых полей.

Метод не принимает никаких аргументов и всегда возвращает список, даже если в форме нет скрытых полей. В этом случае возвращается пустой список. Метод полезен при создании кастомизированных шаблонов форм, где требуется контролировать порядок отображения полей.

Синтаксис

form.hidden_fields()

Пример

Рассмотрим простую форму с явным скрытым полем:

from django import forms class ArticleForm(forms.Form): title = forms.CharField(max_length=100) content = forms.CharField(widget=forms.Textarea) user_id = forms.IntegerField(widget=forms.HiddenInput) status = forms.CharField(widget=forms.HiddenInput, initial='draft') def clean_title(self): data = self.cleaned_data['title'] if len(data) < 3: raise forms.ValidationError('Title is too short') return data

Теперь создадим экземпляр формы и вызовем метод hidden_fields:

from myapp.forms import ArticleForm form = ArticleForm() hidden_fields = form.hidden_fields() for field in hidden_fields: print(field.name)

Результат выполнения кода:

"user_id" "status"

Пример

Рассмотрим пример использования метода в шаблоне для ручной генерации формы:

from django import forms class ProfileForm(forms.Form): username = forms.CharField(max_length=50) email = forms.EmailField() user_id = forms.IntegerField(widget=forms.HiddenInput) referrer = forms.CharField(widget=forms.HiddenInput, required=False) def clean_username(self): data = self.cleaned_data['username'] if ' ' in data: raise forms.ValidationError('Username cannot contain spaces') return data

Создадим форму с данными и проверим работу метода:

from myapp.forms import ProfileForm data = { 'username': 'john_doe', 'email': 'john@example.com', 'user_id': 42, 'referrer': 'newsletter' } form = ProfileForm(data) if form.is_valid(): hidden_fields = form.hidden_fields() for field in hidden_fields: print(f"{field.name}: {field.value()}")

Результат выполнения кода:

"user_id: 42" "referrer: newsletter"

Пример

Метод hidden_fields часто используется в паре с методом visible_fields для разделения полей при генерации HTML:

from django import forms from django.shortcuts import render from myapp.forms import ProfileForm def profile_view(request): form = ProfileForm() hidden_fields = form.hidden_fields() visible_fields = form.visible_fields() return render(request, 'profile.html', { 'form': form, 'hidden_fields': hidden_fields, 'visible_fields': visible_fields })

В шаблоне можно использовать полученные списки для раздельной отрисовки:

{# profile.html #} {% for field in visible_fields %} <div class="form-group"> {{ field.label_tag }} {{ field }} </div> {% endfor %} {# hidden fields #} {% for field in hidden_fields %} {{ field }} {% endfor %}

Смотрите также

  • метод visible_fields,
    который возвращает список видимых полей формы
  • метод as_p,
    который выводит форму в виде тегов <p>
  • метод is_bound,
    который проверяет, привязана ли форма к данным
  • метод as_div,
    который выводит форму в виде тегов <div>
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить