我知道表单字段方法is_checkbox
,用于检查给定django表单的字段是否为复选框。有没有方法来检查该字段是否是textarea?
我试过这样做:
{% if field.is_textarea %}
但这似乎不起作用。
答案 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 text == '':
return render(request, 'html page you want render')
else:
return render(request, ' the exact page you want render if the textarea is filled ')