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

Виджет PasswordInput

Виджет PasswordInput применяется для отображения поля ввода пароля в HTML-формах. Он наследуется от TextInput и по умолчанию устанавливает атрибут type="password", благодаря чему вводимые символы скрываются точками или звёздочками. Виджет может принимать параметры, позволяющие настроить его поведение, например, отключить автозаполнение или задать размер поля.

Синтаксис

from django import forms class MyForm(forms.Form): password = forms.CharField(widget=forms.PasswordInput)

Параметры

Виджет PasswordInput принимает следующие параметры:

  • attrs - словарь с HTML-атрибутами для тега ввода (например, 'class', 'placeholder', 'id');
  • render_value - логический параметр, определяющий, будет ли отображаться значение поля при повторном рендеринге (по умолчанию False);
  • strip - логический параметр, управляющий удалением пробелов (по умолчанию False для этого виджета).

Пример . С кастомными атрибутами

Создадим форму с полем пароля, добавим класс и плейсхолдер:

from django import forms class LoginForm(forms.Form): username = forms.CharField(max_length=100) password = forms.CharField( widget=forms.PasswordInput(attrs={ 'class': 'form-control', 'placeholder': 'Enter your password' }) )

Пример . С рендерингом значения

Иногда требуется отображать введённый пароль при ошибках валидации. Для этого используем параметр render_value:

from django import forms class ProfileForm(forms.Form): old_password = forms.CharField( widget=forms.PasswordInput(render_value=True) ) new_password = forms.CharField( widget=forms.PasswordInput(render_value=False) )

Пример . Использование в представлении

Рассмотрим полный пример формы авторизации в представлении Django:

from django import forms from django.shortcuts import render from django.http import HttpResponse class AuthForm(forms.Form): login = forms.CharField(label='Login', max_length=50) password = forms.CharField( label='Password', widget=forms.PasswordInput(attrs={ 'class': 'pwd-field', 'autocomplete': 'off' }) ) def login_view(request): if request.method == 'POST': form = AuthForm(request.POST) if form.is_valid(): login = form.cleaned_data['login'] password = form.cleaned_data['password'] return HttpResponse(f"User {login} authenticated") else: form = AuthForm() return render(request, 'login.html', {'form': form})

Результат рендеринга поля в HTML:

<input type="password" name="password" class="pwd-field" autocomplete="off" required id="id_password">

Пример . С изменением размера поля

Зададим размер и максимальную длину поля ввода пароля:

from django import forms class RegistrationForm(forms.Form): password = forms.CharField( max_length=32, widget=forms.PasswordInput(attrs={ 'size': '40', 'maxlength': '32' }) )

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

  • виджет TextInput,
    стандартное текстовое поле ввода
  • виджет Textarea,
    многострочное поле для ввода текста
  • виджет EmailInput,
    поле для ввода email-адреса
  • виджет HiddenInput,
    скрытое поле для передачи данных
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить