0

我知道is_checkbox用于检查给定 django 表单的字段是否为复选框的表单字段方法。有什么方法可以检查该字段是否为文本区域?

我试过这样做:

{% if field.is_textarea %}

但这似乎不起作用。

4

3 回答 3

3

编辑:说明 - 过滤器采用字段对象并返回 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 %}
于 2016-07-08T14:43:56.297 回答
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>
于 2012-12-21T09:28:52.020 回答
0

我有同样的意图,唯一的解决方案是在你的views.py.
我的意思是,首先你在 html 代码中为你的文本区域命名,然后views.py.
像这样获取名称,假设你的文本区域名称是 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 ')
于 2021-01-04T11:12:31.990 回答