我知道is_checkbox
用于检查给定 django 表单的字段是否为复选框的表单字段方法。有什么方法可以检查该字段是否为文本区域?
我试过这样做:
{% if field.is_textarea %}
但这似乎不起作用。
我知道is_checkbox
用于检查给定 django 表单的字段是否为复选框的表单字段方法。有什么方法可以检查该字段是否为文本区域?
我试过这样做:
{% if field.is_textarea %}
但这似乎不起作用。
编辑:说明 - 过滤器采用字段对象并返回 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 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>
我有同样的意图,唯一的解决方案是在你的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 ')