Виджет Textarea
Виджет Textarea применяется для отображения текстового поля,
предназначенного для ввода большого объема текста. В HTML он
превращается в тег <textarea>. Данный виджет особенно
полезен для полей, где требуется ввод описаний, комментариев
или другого многострочного содержимого. При создании виджета
можно указать такие атрибуты, как cols и rows
для задания размеров текстовой области, а также передать
произвольные HTML-атрибуты через параметр attrs.
Синтаксис
from django import forms
class MyForm(forms.Form):
field_name = forms.CharField(widget=forms.Textarea(attrs={'rows': 10, 'cols': 40}))
Пример
Создадим простую форму с полем для ввода описания статьи,
используя виджет Textarea:
from django import forms
class ArticleForm(forms.Form):
title = forms.CharField(max_length=100)
description = forms.CharField(
widget=forms.Textarea(attrs={'rows': 5, 'cols': 50}),
label='Описание статьи'
)
Пример
Используем виджет Textarea в форме, основанной на модели,
для поля, которое хранит большой текст:
from django import forms
from myapp.models import Article
class ArticleModelForm(forms.ModelForm):
class Meta:
model = Article
fields = ['title', 'content', 'status']
widgets = {
'content': forms.Textarea(attrs={
'rows': 15,
'cols': 80,
'placeholder': 'Введите текст статьи здесь...'
}),
}
Пример
Зададим виджету Textarea дополнительные CSS-классы
для стилизации через атрибут attrs:
from django import forms
class CommentForm(forms.Form):
author = forms.CharField(max_length=50)
comment = forms.CharField(
widget=forms.Textarea(attrs={
'class': 'form-control comment-area',
'rows': 4,
'cols': 60,
'id': 'comment-field'
}),
label='Ваш комментарий'
)
Пример
Используем виджет Textarea с передачей начального
значения через поле формы:
from django import forms
class EditArticleForm(forms.Form):
content = forms.CharField(
widget=forms.Textarea(attrs={'rows': 10, 'cols': 70}),
initial='Это текст статьи по умолчанию.'
)
Смотрите также
-
виджет
TextInput,
который создает однострочное текстовое поле -
виджет
PasswordInput,
который предназначен для ввода паролей -
виджет
EmailInput,
который используется для ввода email-адресов -
поле
CharField,
которое по умолчанию использует виджет TextInput