Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 如何检查字段是否为文本区域_Django_Templates_Textarea_Form Fields - Fatal编程技术网

Django 如何检查字段是否为文本区域

Django 如何检查字段是否为文本区域,django,templates,textarea,form-fields,Django,Templates,Textarea,Form Fields,我知道表单字段方法is_checkbox,该方法用于检查给定django表单的字段是否为复选框。是否有任何方法检查该字段是否为textarea 我尝试过这样做: {% if field.is_textarea %} 但这似乎不起作用。您应该做如下操作: {% if field.widget...... %} 小部件负责呈现,而不是它自己的字段 在shell中检查它的示例: from django import forms from django.forms import widgets c

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

我尝试过这样做:

{% if field.is_textarea %}

但这似乎不起作用。

您应该做如下操作:

{% 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>
来自django导入表单的

从django.forms导入小部件
班级联络表(forms.Form):
text=forms.CharField(最大长度=100,小部件=widgets.Textarea)
f=联系人表单()
f、 字段['text'].widget

您应该执行以下操作:

{% 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>
来自django导入表单的

从django.forms导入小部件
班级联络表(forms.Form):
text=forms.CharField(最大长度=100,小部件=widgets.Textarea)
f=联系人表单()
f、 字段['text'].widget

编辑:解释-过滤器获取字段对象并返回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 %}
{%if字段|输入_类型=='Textarea%}
{{field}}
{%else%}
{{field}}
{%endif%}

编辑:解释-过滤器获取字段对象并返回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 %}
{%if字段|输入_类型=='Textarea%}
{{field}}
{%else%}
{{field}}
{%endif%}

我也有同样的想法,唯一的解决方案是在
视图.py上使用if条件
我的意思是,首先在html代码中为文本区域命名,然后移动到
views.py。

像这样抓取名称假设您的文本区域名称为“text” 在views.py中编写此代码
text=request.GET['text']
然后创建if语句,如下所示

如果文本=='':
返回呈现(请求“要呈现的html页面”)
其他:
返回render(请求“如果textarea已填充,则要呈现的确切页面”)

我也有同样的想法,唯一的解决方案是在
视图.py上使用if条件
我的意思是,首先在html代码中为文本区域命名,然后移动到
views.py。

像这样抓取名称假设您的文本区域名称为“text” 在views.py中编写此代码
text=request.GET['text']
然后创建if语句,如下所示

如果文本=='':
返回呈现(请求“要呈现的html页面”)
其他:
返回render(请求“如果textarea已填充,则要呈现的确切页面”)

有什么方法可以在shell中检查它吗?@Amyth是的,等等,我会检查一些与modelforms一起工作的tanks@YardenST:),非常有用。但是我想在模板中检查它,或者我已经调整了css来解决这个问题。但你的回答确实符合我的要求。谢谢。您可以创建一个过滤器,该过滤器采用表单字段,如果其小部件是文本区域,则返回true,这样您可以在模板中执行检查有没有办法在shell中检查它?@Amyth是的,等等,我会检查一些与modelforms一起工作的tanks@YardenST:),非常有用。但是我想在模板中检查它,或者我已经调整了css来解决这个问题。但你的回答确实符合我的要求。谢谢。您可以创建一个过滤器,该过滤器采用表单字段,如果其小部件是文本区域,则返回true,这样您可以在模板中执行检查。虽然这可能会回答问题,但对代码的一些解释会更有用。虽然这可能会回答问题,但对代码的一些解释会更有用。