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

Метод as_div

Метод as_div применяется к экземпляру формы и возвращает строку с HTML-разметкой, где каждое поле формы обёрнуто в тег <div>. Этот метод автоматически добавляет классы 'required' для обязательных полей, 'error' для полей с ошибками валидации и вставляет сообщения об ошибках и подсказки. Метод не принимает никаких аргументов и возвращает объект SafeString.

Синтаксис

form.as_div()

Пример

Давайте создадим простую форму регистрации и отрендерим её с помощью as_div:

from django import forms class RegistrationForm(forms.Form): username = forms.CharField(max_length=50, label="Username") email = forms.EmailField(label="Email address") age = forms.IntegerField(label="Age") agree = forms.BooleanField(label="I agree to terms") form = RegistrationForm() html_output = form.as_div() print(html_output)

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

"<div><label for=\"id_username\">Username:</label><input type=\"text\" name=\"username\" maxlength=\"50\" required id=\"id_username\"></div>\n<div><label for=\"id_email\">Email address:</label><input type=\"email\" name=\"email\" required id=\"id_email\"></div>\n<div><label for=\"id_age\">Age:</label><input type=\"number\" name=\"age\" required id=\"id_age\"></div>\n<div><label for=\"id_agree\">I agree to terms:</label><input type=\"checkbox\" name=\"agree\" required id=\"id_agree\"></div>"

Пример

Рассмотрим рендеринг формы с ошибками валидации, чтобы увидеть, как as_div обрабатывает ошибки и добавляет CSS-классы:

from django import forms class LoginForm(forms.Form): username = forms.CharField(max_length=50) password = forms.CharField(widget=forms.PasswordInput) form = LoginForm({ 'username': '', 'password': '123' }) if not form.is_valid(): html_output = form.as_div() print(html_output)

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

"<div class=\"error\"><label for=\"id_username\">Username:</label><input type=\"text\" name=\"username\" maxlength=\"50\" required id=\"id_username\"><ul class=\"errorlist\"><li>This field is required.</li></ul></div>\n<div><label for=\"id_password\">Password:</label><input type=\"password\" name=\"password\" required id=\"id_password\"></div>"

Пример

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

from django.shortcuts import render from .forms import RegistrationForm def register_view(request): form = RegistrationForm() return render(request, 'register.html', {'form': form})

А вот код шаблона 'register.html':

<form method="post"> {% csrf_token %} {{ form.as_div }} <button type="submit">Register</button> </form>

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

<form method="post"> <div><label for="id_username">Username:</label><input type="text" name="username" maxlength="50" required id="id_username"></div> <div><label for="id_email">Email address:</label><input type="email" name="email" required id="id_email"></div> <div><label for="id_age">Age:</label><input type="number" name="age" required id="id_age"></div> <div><label for="id_agree">I agree to terms:</label><input type="checkbox" name="agree" required id="id_agree"></div> <button type="submit">Register</button> </form>

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

  • метод as_p,
    который рендерит форму в тегах <p>
  • метод as_table,
    который рендерит форму в виде HTML-таблицы
  • метод as_ul,
    который рендерит форму в виде списка <ul>
  • метод is_valid,
    который проверяет валидность данных формы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить