如何在渲染时将attrs添加到Widget

时间:2011-05-26 12:21:01

标签: django django-templates django-forms

我有以下表格:

from django import forms    
class PostForm(forms.Form):
    message = forms.CharField(widget=forms.Textarea)

以及我模板中的以下部分

<p>{{ form.message }}</p>

它将字段呈现为指定的textarea。虽然对于模板我想将其设置为4行和25列,而不实际触及形式定义。这可能吗?

3 个答案:

答案 0 :(得分:5)

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 :(得分: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>

答案 2 :(得分:0)

您无法从模板中执行此操作,但您可以:

  1. 使用CSS指定textarea的宽度和高度。这将覆盖行和列属性

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