#django #django-templates #django-forms
#django #django-шаблоны #django-формы
Вопрос:
У меня есть следующая форма:
from django import forms
class PostForm(forms.Form):
message = forms.CharField(widget=forms.Textarea)
и следующая часть в моем шаблоне
<p>{{ form.message }}</p>
это отображает поле в виде текстовой области, как указано. Хотя для шаблона я хочу установить его на 4 строки и 25 столбцов, фактически не касаясь определения формы. Возможно ли это?
Ответ №1:
class PostForm(forms.Form):
message = forms.CharField(widget=forms.Textarea)
def set4x25(self):
self.fields['message'].widget.attrs = {'rows':'4', 'cols': '25'}
И в шаблоне:
{{ form.set4x25 }}
{{ form.message }}
Вы можете настроить эту идею по своему усмотрению.
Комментарии:
1. Это слишком просто: D: D Спасибо
2. Это касается определения формы, не так ли?
3. @Andrey Fedoseev Я думаю, что Jokey означает объявление полей формы.
Ответ №2:
Вы можете сделать это в шаблоне с помощью django-widget-tweaks:
{% load widget_tweaks %}
<p>{% render_field form.message rows="4" cols="25" %}</p>
или
{% load widget_tweaks %}
<p>{{ form.message|attr:"rows:4"|attr:"cols:25" }}</p>
Ответ №3:
Вы не можете сделать это из шаблона, но вы можете:
-
Используйте CSS, чтобы указать ширину и высоту текстовой области. Это переопределит атрибуты rows и cols
-
Отрисовываем поле вручную:
{% with form.message as field %} <textarea name="{{ field.html_name }}" id="{{ field.html_initial_id }}" rows="4" cols="25">{% if field.data %}{{ field.data }}{% endif %}</textarea> {% endfor %}