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,这样您可以在模板中执行检查。虽然这可能会回答问题,但对代码的一些解释会更有用。虽然这可能会回答问题,但对代码的一些解释会更有用。