我怎样才能检查一个字段是否是textarea

时间:2012-12-21 09:25:53

标签: django templates textarea form-fields

我知道表单字段方法is_checkbox,用于检查给定django表单的字段是否为复选框。有没有方法来检查该字段是否是textarea?

我试过这样做:

{% if field.is_textarea %}

但这似乎不起作用。

3 个答案:

答案 0 :(得分:1)

您应该执行以下操作:

{% if field.widget...... %}

小部件负责渲染,而不是它自己的字段。

在shell中检查它的示例:

from django import forms
from django.forms import widgets

class ContactForm(forms.Form):
    text = forms.CharField(max_length=100, widget=widgets.Textarea)

f = ContactForm()
f.fields['text'].widget

<django.forms.widgets.Textarea object at 0x218ccd0>

答案 1 :(得分:0)

编辑:说明 - 过滤器获取字段对象并返回Django使用的窗口小部件的名称,可用于与字符串进行比较。

templatetags.py中使用定义模板过滤器:

from django import template
register = template.Library()


@register.filter('input_type')
def input_type(input):
return input.field.widget.__class__.__name__

并在模板中使用它,例如:

{% if field|input_type == 'Textarea' %}
<div class="col-xl-9">{{ field }}</div>
{% else %}
<div class="col-xl-3">{{ field }}</div>
{% endif %}

答案 2 :(得分:0)

我有同样的意图,唯一的解决方案是在您的 views.py 上使用 if 条件。
我的意思是首先您在 html 代码中为文本区域命名,然后移至 views.py.
像这样获取名称假设您的文本区域名称是“text” 在 views.py 中编写此代码 text = request.GET ['text'] 然后创建像

这样的 if 语句
if text == '':
    return render(request, 'html page you want render')
else:
    return render(request, ' the exact page you want render if the textarea is filled ')