Как добавить ссылки на виджет во время визуализации

#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:

Вы не можете сделать это из шаблона, но вы можете:

  1. Используйте CSS, чтобы указать ширину и высоту текстовой области. Это переопределит атрибуты rows и cols

  2. Отрисовываем поле вручную:

       {% 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 %}